Unity 6.3
0 онлайн 65 гостей 3 в системе
Вход

BuiltinShaderDefine

перечисление

Описание

Определяет набор редактора при компиляции шейдеров, основанный на целевой платформе и GraphicsTier.

Эти определения отражают доступность платформозависимых возможностей (таких как BuiltinShaderDefine.UNITY_ASTC_NORMALMAP_ENCODING) и текущих графических API (таких как BuiltinShaderDefine.SHADER_API_DESKTOP).

Определения BuiltinShaderDefine данного варианта становятся доступны для программно настраиваемого удаления вариантов шейдеров через PlatformKeywordSet.

Дополнительные ресурсы: GraphicsSettings.HasShaderDefine.

using UnityEditor;
using UnityEditor.Rendering;
using UnityEngine;
using UnityEngine.Rendering;

// Adds a new Editor menu item called Example. Select Example > PrintLightModeTagExample
// from the Editor menu to print all shader defines Unity adds when compiling a shader
// for the current build target and the Vulkan API.
public class PrintBuiltInDefines
{
    public const ShaderCompilerPlatform kTargetPlatform = ShaderCompilerPlatform.Vulkan;

    [MenuItem("Example/Print built-in defines")]
    public static void Print()
    {
        // Get current build target
        BuildTarget currentBuildTarget = EditorUserBuildSettings.activeBuildTarget;
        
        // Collect defines from the build target and platform
        BuiltinShaderDefine[] defines = ShaderUtil.GetShaderPlatformKeywordsForBuildTarget(kTargetPlatform, currentBuildTarget);

        // Print the defines
        string definesAsString = string.Join(' ', defines);
        string message = $"Built-in defines for compiler platform {kTargetPlatform} and active build target ({currentBuildTarget}): {definesAsString}";
        Debug.Log(message);
    }
}

Свойства

Свойство Описание
UNITY_NO_DXT5nmUNITY_NO_DXT5nm устанавливается при компиляции шейдера для платформ, которые не поддерживают DXT5NM, что означает, что обычные карты будут кодироваться в RGB вместо этого.
UNITY_NO_RGBMUNITY_NO_RGBM устанавливается при компиляции шейдера для платформ, которые не поддерживают RGBM, поэтому вместо него будет использоваться dLDR.
UNITY_ENABLE_REFLECTION_BUFFERSUNITY_ENABLE_REFLECTION_BUFFERS устанавливается, когда отсроченное затенение отображает отраженные зонды в отложенном режиме. С этой опцией отраженные отражения отображаются в буфер на пиксель. Это похоже на то, как свет отображается в буфер на пиксель. UNITY_ENABLE_REFLECTION_BUFFERS включается по умолчанию при использовании отсроченного затенения, но вы можете отключить его, установив «Нет поддержки» для опции Deferred Reflections shader в Graphics Settings. Когда эта опция отключена, отраженные зонды отображаются по объектам, подобно тому, как работает отображение вперед.
UNITY_FRAMEBUFFER_FETCH_AVAILABLEUNITY_FRAMEBUFFER_FETCH_AVAILABLE устанавливается при компиляции шейдеров для платформ, на которых потенциально доступна загрузка framebuffer.
UNITY_ENABLE_NATIVE_SHADOW_LOOKUPSUNITY_ENABLE_NATIVE_SHADOW_LOOKUPS позволяет использовать встроенные в OpenGL ES 2.0 семплеры сравнения теней.
UNITY_METAL_SHADOWS_USE_POINT_FILTERINGUNITY_METAL_SHADOWS_USE_POINT_FILTERING устанавливается, если shadow sampler должен использовать точечную фильтрацию на iOS Metal.
UNITY_NO_SCREENSPACE_SHADOWSUNITY_NO_SCREENSPACE_SHADOWS устанавливается, когда отключены каскадные тени экрана.
UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWSUNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS устанавливается, когда включены полупрозрачные тени.
UNITY_PBS_USE_BRDF1UNITY_PBS_USE_BRDF1 устанавливается, если должен использоваться Standard Shader BRDF1.
UNITY_PBS_USE_BRDF2UNITY_PBS_USE_BRDF2 устанавливается, если должен использоваться Standard Shader BRDF2.
UNITY_PBS_USE_BRDF3UNITY_PBS_USE_BRDF3 устанавливается, если должен использоваться Standard Shader BRDF3.
UNITY_SPECCUBE_BOX_PROJECTIONUNITY_SPECCUBE_BLENDING устанавливается, если включена проекция коробки отраженных зондов.
UNITY_SPECCUBE_BLENDINGUNITY_SPECCUBE_BLENDING устанавливается, если включено Слияние зондов отражения.
UNITY_ENABLE_DETAIL_NORMALMAPUNITY_ENABLE_DETAIL_NORMALMAP устанавливается, если Детальная Карта нормалей должна использоваться, если назначена.
SHADER_API_MOBILESHADER_API_MOBILE устанавливается при компиляции шейдера для мобильных платформ.
SHADER_API_DESKTOPSHADER_API_DESKTOP устанавливается при компиляции шейдера для "настольных" платформ.
UNITY_HARDWARE_TIER1UNITY_HARDWARE_TIER1 установлен при компиляции шейдеров для GraphicsTier.Tier1.
UNITY_HARDWARE_TIER2UNITY_HARDWARE_TIER2 установлен при компиляции шейдеров для GraphicsTier.Tier2.
UNITY_HARDWARE_TIER3UNITY_HARDWARE_TIER3 установлен при компиляции шейдеров для GraphicsTier.Tier3.
UNITY_COLORSPACE_GAMMAUNITY_COLORSPACE_GAMMA устанавливается при компиляции шейдеров для Gamma Color Space.
UNITY_LIGHT_PROBE_PROXY_VOLUMEUNITY_LIGHT_PROBE_PROXY_VOLUME устанавливается, когда функция Light Probe Proxy Volume поддерживается текущей графикой API и включена в настройках Graphics Tier. Вы можете установить Graphics Tier только в Built-in Render Pipeline.
UNITY_LIGHTMAP_DLDR_ENCODINGUNITY_LIGHTMAP_DLDR_ENCODING устанавливается, когда текстуры lightmap используют двойное кодирование LDR для хранения значений в текстуре.
UNITY_LIGHTMAP_RGBM_ENCODINGUNITY_LIGHTMAP_RGBM_ENCODING устанавливается, когда текстуры lightmap используют кодировку RGBM для хранения значений в текстуре.
UNITY_LIGHTMAP_FULL_HDRUNITY_LIGHTMAP_FULL_HDR устанавливается, когда текстуры lightmap не используют кодировку для хранения значений в текстуре.
UNITY_VIRTUAL_TEXTURINGВключено ли виртуальное текстурирование и поддерживается ли оно на этой платформе.
UNITY_PRETRANSFORM_TO_DISPLAY_ORIENTATIONUnity включает UNITY_PRETRANSFORM_TO_DISPLAY_ORIENTATION, когда предварительное преобразование Vulkan включено и поддерживается на целевой платформе сборки.
UNITY_ASTC_NORMALMAP_ENCODINGUnity включает UNITY_ASTC_NORMALMAP_ENCODING, когда нормальные отображения DXT5nm используются на Android, iOS или tvOS.
SHADER_API_GLES30SHADER_API_ES30 устанавливается, когда Графика API является OpenGL ES 3 и минимальная поддерживаемая версия OpenGL ES 3 является OpenGL ES 3.0.
SHADER_API_GLES31SHADER_API_ES31 устанавливается, когда Графика API является OpenGL ES 3 и минимальная поддерживаемая версия OpenGL ES 3 является OpenGL ES 3.1.
SHADER_API_GLES32SHADER_API_ES32 устанавливается, когда Графика API является OpenGL ES 3 и минимальная поддерживаемая версия OpenGL ES 3 является OpenGL ES 3.2.
UNITY_UNIFIED_SHADER_PRECISION_MODELUnity устанавливает UNITY_UNIFIED_SHADER_PRECISION_MODEL, если в Настройках Проигрывателя вы установили Модель точности шейдера на Унифицированную.
UNITY_PLATFORM_SUPPORTS_WAVE_32Unity устанавливает UNITY_PLATFORM_SUPPORTS_WAVE_32, если известно, что целевая платформа поддерживает операции шейдера на волновом уровне с размером волны 32.
UNITY_PLATFORM_SUPPORTS_WAVE_64Unity устанавливает UNITY_PLATFORM_SUPPORTS_WAVE_64, если известно, что целевая платформа поддерживает операции шейдера на волновом уровне с размером волны 64.
UNITY_NEEDS_RENDERPASS_FBFETCH_FALLBACKUNITY_NEEDS_RENDERPASS_FBFETCH_FALLBACK устанавливается, когда нам нужно создать резерв для RenderPass из-за возможности отсутствия framebuffer fetch
UNITY_PLATFORM_SUPPORTS_DEPTH_FETCHUNITY_PLATFORM_SUPPORTS_DEPTH_FETCH устанавливается, если RenderPass может использовать в качестве входа свой приспособленный глубинный параметр.