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

添加内置关键字集合

您可以使用 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 No 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 否 所有绘制实时光照和阴影的通道,光照探针除外。
multi_compile_particles SOFTPARTICLES_ON 是 粒子系统通道。
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

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

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