Добавление встроенных наборов ключевых слов
Для создания наборов ключевых слов и вариантов шейдера можно использовать ярлыки директивы шейдера Unity. Например, в следующем примере добавлены ключевые слова и варианты SHADOWS_DEPTH и SHADOWS_CUBE:
#pragma multi_compile_shadowcaster
Горячие клавиши директивы шейдера
| Ярлык | ключевые слова шейдера Unity добавляет | Unity добавляет шейдерный вариант со всеми ключевыми словами | Пропуск шейдера, использующий варианты шейдера |
|---|---|---|---|
multi_compile_fog |
FOG_LINEAR, FOG_EXP, FOG_EXP2 |
Да | Туман |
multi_compile_fwdadd |
POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE |
Нет | PassType.ForwardAdd |
multi_compile_fwdadd_fullshadows |
POINT, DIRECTIONAL, SPOT, POINT_COOKIE, DIRECTIONAL_COOKIE, SHADOWS_DEPTH SHADOWS_SCREEN SHADOWS_CUBE SHADOWS_SOFT SHADOWS_SHADOWMASK, LIGHTMAP_SHADOW_MIXING |
Нет | PassType.ForwardAdd. Добавлена возможность для светильников иметь тени в реальном времени. |
multi_compile_fwdbase |
DIRECTIONAL, LIGHTMAP_ON, DIRLIGHTMAP_COMBINED, DYNAMICLIGHTMAP_ON, SHADOWS_SCREEN, SHADOWS_SHADOWMASK, LIGHTMAP_SHADOW_MIXING, LIGHTPROBE_SH |
Нет |
PassType.ForwardBase. |
multi_compile_fwdbasealpha |
DIRECTIONAL, LIGHTMAP_ON, DIRLIGHTMAP_COMBINED, DYNAMICLIGHTMAP_ON, LIGHTMAP_SHADOW_MIXING, VERTEXLIGHT_ON, LIGHTPROBE_SH |
Нет | PassType.ForwardBase |
multi_compile_instancing |
INSTANCING_ON. Также добавляет PROCEDURAL_ON, если ваш проект использует процедурное экземплярование. |
Да | Инстансинг |
multi_compile_lightpass |
POINT, DIRECTIONAL, SPOT, POINT_COOKIE, DIRECTIONAL_COOKIE, SHADOWS_DEPTH, SHADOWS_SCREEN, SHADOWS_CUBE, SHADOWS_SOFT, SHADOWS_SHADOWMASK, LIGHTMAP_SHADOW_MIXING |
Нет | Все проходы, которые рисуют свет и тени в реальном времени, за исключением Light Probes. |
multi_compile_particles |
SOFTPARTICLES_ON |
Да | Particle System проходит. |
multi_compile_prepassfinal |
LIGHTMAP_ON, DIRLIGHTMAP_COMBINED, DYNAMICLIGHTMAP_ON, UNITY_HDR_ON, SHADOWS_SHADOWMASK, LIGHTPROBE_SH |
Да | PassType.Deferred |
multi_compile_shadowcaster |
SHADOWS_DEPTH, SHADOWS_CUBE |
Нет | PassType.ShadowCaster |
multi_compile_shadowcollector |
SHADOWS_SPLIT_SPHERES, SHADOWS_SINGLE_CASCADE |
Да | Экранно-пространственные тени. |
Удалить варианты
Вы можете использовать директиву skip_variants для удаления ключевых слов, которые вы не используете.
Например, в следующем примере добавлены ключевые слова для набора multi_compile_fwdadd, но удалены варианты POINT и POINT_COOKIES.
#pragma multi_compile_fwdadd
#pragma skip_variants POINT POINT_COOKIE
Подробнее об удалении вариантов см. в Варианты шейдера полосы.