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_DXT5nm | UNITY_NO_DXT5nm устанавливается при компиляции шейдера для платформ, которые не поддерживают DXT5NM, что означает, что обычные карты будут кодироваться в RGB вместо этого. |
| UNITY_NO_RGBM | UNITY_NO_RGBM устанавливается при компиляции шейдера для платформ, которые не поддерживают RGBM, поэтому вместо него будет использоваться dLDR. |
| UNITY_ENABLE_REFLECTION_BUFFERS | UNITY_ENABLE_REFLECTION_BUFFERS устанавливается, когда отсроченное затенение отображает отраженные зонды в отложенном режиме. С этой опцией отраженные отражения отображаются в буфер на пиксель. Это похоже на то, как свет отображается в буфер на пиксель. UNITY_ENABLE_REFLECTION_BUFFERS включается по умолчанию при использовании отсроченного затенения, но вы можете отключить его, установив «Нет поддержки» для опции Deferred Reflections shader в Graphics Settings. Когда эта опция отключена, отраженные зонды отображаются по объектам, подобно тому, как работает отображение вперед. |
| UNITY_FRAMEBUFFER_FETCH_AVAILABLE | UNITY_FRAMEBUFFER_FETCH_AVAILABLE устанавливается при компиляции шейдеров для платформ, на которых потенциально доступна загрузка framebuffer. |
| UNITY_ENABLE_NATIVE_SHADOW_LOOKUPS | UNITY_ENABLE_NATIVE_SHADOW_LOOKUPS позволяет использовать встроенные в OpenGL ES 2.0 семплеры сравнения теней. |
| UNITY_METAL_SHADOWS_USE_POINT_FILTERING | UNITY_METAL_SHADOWS_USE_POINT_FILTERING устанавливается, если shadow sampler должен использовать точечную фильтрацию на iOS Metal. |
| UNITY_NO_SCREENSPACE_SHADOWS | UNITY_NO_SCREENSPACE_SHADOWS устанавливается, когда отключены каскадные тени экрана. |
| UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS | UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS устанавливается, когда включены полупрозрачные тени. |
| UNITY_PBS_USE_BRDF1 | UNITY_PBS_USE_BRDF1 устанавливается, если должен использоваться Standard Shader BRDF1. |
| UNITY_PBS_USE_BRDF2 | UNITY_PBS_USE_BRDF2 устанавливается, если должен использоваться Standard Shader BRDF2. |
| UNITY_PBS_USE_BRDF3 | UNITY_PBS_USE_BRDF3 устанавливается, если должен использоваться Standard Shader BRDF3. |
| UNITY_SPECCUBE_BOX_PROJECTION | UNITY_SPECCUBE_BLENDING устанавливается, если включена проекция коробки отраженных зондов. |
| UNITY_SPECCUBE_BLENDING | UNITY_SPECCUBE_BLENDING устанавливается, если включено Слияние зондов отражения. |
| UNITY_ENABLE_DETAIL_NORMALMAP | UNITY_ENABLE_DETAIL_NORMALMAP устанавливается, если Детальная Карта нормалей должна использоваться, если назначена. |
| SHADER_API_MOBILE | SHADER_API_MOBILE устанавливается при компиляции шейдера для мобильных платформ. |
| SHADER_API_DESKTOP | SHADER_API_DESKTOP устанавливается при компиляции шейдера для "настольных" платформ. |
| UNITY_HARDWARE_TIER1 | UNITY_HARDWARE_TIER1 установлен при компиляции шейдеров для GraphicsTier.Tier1. |
| UNITY_HARDWARE_TIER2 | UNITY_HARDWARE_TIER2 установлен при компиляции шейдеров для GraphicsTier.Tier2. |
| UNITY_HARDWARE_TIER3 | UNITY_HARDWARE_TIER3 установлен при компиляции шейдеров для GraphicsTier.Tier3. |
| UNITY_COLORSPACE_GAMMA | UNITY_COLORSPACE_GAMMA устанавливается при компиляции шейдеров для Gamma Color Space. |
| UNITY_LIGHT_PROBE_PROXY_VOLUME | UNITY_LIGHT_PROBE_PROXY_VOLUME устанавливается, когда функция Light Probe Proxy Volume поддерживается текущей графикой API и включена в настройках Graphics Tier. Вы можете установить Graphics Tier только в Built-in Render Pipeline. |
| UNITY_LIGHTMAP_DLDR_ENCODING | UNITY_LIGHTMAP_DLDR_ENCODING устанавливается, когда текстуры lightmap используют двойное кодирование LDR для хранения значений в текстуре. |
| UNITY_LIGHTMAP_RGBM_ENCODING | UNITY_LIGHTMAP_RGBM_ENCODING устанавливается, когда текстуры lightmap используют кодировку RGBM для хранения значений в текстуре. |
| UNITY_LIGHTMAP_FULL_HDR | UNITY_LIGHTMAP_FULL_HDR устанавливается, когда текстуры lightmap не используют кодировку для хранения значений в текстуре. |
| UNITY_VIRTUAL_TEXTURING | Включено ли виртуальное текстурирование и поддерживается ли оно на этой платформе. |
| UNITY_PRETRANSFORM_TO_DISPLAY_ORIENTATION | Unity включает UNITY_PRETRANSFORM_TO_DISPLAY_ORIENTATION, когда предварительное преобразование Vulkan включено и поддерживается на целевой платформе сборки. |
| UNITY_ASTC_NORMALMAP_ENCODING | Unity включает UNITY_ASTC_NORMALMAP_ENCODING, когда нормальные отображения DXT5nm используются на Android, iOS или tvOS. |
| SHADER_API_GLES30 | SHADER_API_ES30 устанавливается, когда Графика API является OpenGL ES 3 и минимальная поддерживаемая версия OpenGL ES 3 является OpenGL ES 3.0. |
| SHADER_API_GLES31 | SHADER_API_ES31 устанавливается, когда Графика API является OpenGL ES 3 и минимальная поддерживаемая версия OpenGL ES 3 является OpenGL ES 3.1. |
| SHADER_API_GLES32 | SHADER_API_ES32 устанавливается, когда Графика API является OpenGL ES 3 и минимальная поддерживаемая версия OpenGL ES 3 является OpenGL ES 3.2. |
| UNITY_UNIFIED_SHADER_PRECISION_MODEL | Unity устанавливает UNITY_UNIFIED_SHADER_PRECISION_MODEL, если в Настройках Проигрывателя вы установили Модель точности шейдера на Унифицированную. |
| UNITY_PLATFORM_SUPPORTS_WAVE_32 | Unity устанавливает UNITY_PLATFORM_SUPPORTS_WAVE_32, если известно, что целевая платформа поддерживает операции шейдера на волновом уровне с размером волны 32. |
| UNITY_PLATFORM_SUPPORTS_WAVE_64 | Unity устанавливает UNITY_PLATFORM_SUPPORTS_WAVE_64, если известно, что целевая платформа поддерживает операции шейдера на волновом уровне с размером волны 64. |
| UNITY_NEEDS_RENDERPASS_FBFETCH_FALLBACK | UNITY_NEEDS_RENDERPASS_FBFETCH_FALLBACK устанавливается, когда нам нужно создать резерв для RenderPass из-за возможности отсутствия framebuffer fetch |
| UNITY_PLATFORM_SUPPORTS_DEPTH_FETCH | UNITY_PLATFORM_SUPPORTS_DEPTH_FETCH устанавливается, если RenderPass может использовать в качестве входа свой приспособленный глубинный параметр. |