Version: Unity 6.0 (6000.0)
语言 : 中文
在脚本中切换和检查着色器关键字
通过内置宏在着色器中建立分支

添加内置关键字集合

您可以使用 Unity 着色器指令快捷方式来创建着色器关键字和变体集合。例如,以下示例添加了 SHADOWS_DEPTHSHADOWS_CUBE 关键字及变体:

#pragma multi_compile_shadowcaster

着色器指令快捷方式

方式 Unity 添加的着色器关键字 Unity 在所有关键字关闭时添加变体 使用变体的着色器通道
multi_compile_fog FOG_LINEARFOG_EXPFOG_EXP2
multi_compile_fwdadd POINT DIRECTIONAL SPOT POINT_COOKIE DIRECTIONAL_COOKIE PassType.ForwardAdd
multi_compile_fwdadd_fullshadows POINTDIRECTIONALSPOTPOINT_COOKIEDIRECTIONAL_COOKIESHADOWS_DEPTH SHADOWS_SCREEN SHADOWS_CUBE SHADOWS_SOFT SHADOWS_SHADOWMASKLIGHTMAP_SHADOW_MIXING No PassType.ForwardAdd。添加了光源具有实时阴影的功能。
multi_compile_fwdbase DIRECTIONALLIGHTMAP_ONDIRLIGHTMAP_COMBINEDDYNAMICLIGHTMAP_ONSHADOWS_SCREENSHADOWS_SHADOWMASKLIGHTMAP_SHADOW_MIXINGLIGHTPROBE_SH PassType.ForwardBase
multi_compile_fwdbasealpha DIRECTIONALLIGHTMAP_ONDIRLIGHTMAP_COMBINEDDYNAMICLIGHTMAP_ONLIGHTMAP_SHADOW_MIXINGVERTEXLIGHT_ONLIGHTPROBE_SH PassType.ForwardBase
multi_compile_instancing INSTANCING_ON。如果项目使用程序实例化,还会添加 PROCEDURAL_ON 实例化
multi_compile_lightpass POINTDIRECTIONALSPOTPOINT_COOKIEDIRECTIONAL_COOKIESHADOWS_DEPTHSHADOWS_SCREENSHADOWS_CUBESHADOWS_SOFTSHADOWS_SHADOWMASKLIGHTMAP_SHADOW_MIXING 所有绘制实时光照和阴影的通道,光照探针除外。
multi_compile_particles SOFTPARTICLES_ON 粒子系统通道。
multi_compile_prepassfinal LIGHTMAP_ONDIRLIGHTMAP_COMBINEDDYNAMICLIGHTMAP_ONUNITY_HDR_ONSHADOWS_SHADOWMASKLIGHTPROBE_SH PassType.Deferred
multi_compile_shadowcaster SHADOWS_DEPTHSHADOWS_CUBE PassType.ShadowCaster
multi_compile_shadowcollector SHADOWS_SPLIT_SPHERESSHADOWS_SINGLE_CASCADE 屏幕空间阴影。

删除变体

您可以使用 skip_variants 指令删除不使用的关键字。

例如,以下示例为 multi_compile_fwdadd 集合添加了关键字,但删除了 POINTPOINT_COOKIES 变体。

#pragma multi_compile_fwdadd
#pragma skip_variants POINT POINT_COOKIE

如需详细了解删除变体,请参阅着色器变体剥离

在脚本中切换和检查着色器关键字
通过内置宏在着色器中建立分支