ShaderLab 语法:通道标记 (Pass Tags)
通道利用标记告诉渲染引擎它们期望的渲染方式和渲染时间。
语法
- Tags { "TagName1" = "Value1" "TagName2" = "Value2" }
- 指定 TagName1 的值为 Value1,TagName2 的值为 Value2。你可以使用任意数量的标记。
详细信息
标记从根本上来说是键值对。在通道内,标记用于控制该通道在光照管线(环境光照、顶点光照、像素光照等等)中的作用和一些其他选项。请注意:以下经 Unity 认证的标记必须是在通道部分内,而非在子着色器内!
LightMode 标记
LightMode 标记定义通道在光照管线中的作用。有关详细信息,请参阅渲染器管线。这些标记很少手动使用;需要与光照交互的着色器通常被写作表面渲染器,于是所有的详细信息都会被注意到。
LightMode 标记的可能值有:
Always:总是渲染,不应用光照。
ForwardBase:用于正向渲染中,应用环境光照、主方向光照和顶点/SH 光照。
ForwardAdd:用于正向渲染中;以每个光照一个通道的方式应用附加的逐像素光照。
PrepassBase:用于延时光照中,渲染法线和高光指数。
PrepassFinal:用于延时光照中,通过组合纹理、光照和发射来渲染最终颜色。
Vertex:未对对象进行光照贴图时,用于顶点光照渲染中;应用所有的顶点光照。
VertexLMRGBM:已对对象进行光照贴图时,用于顶点光照渲染中;在光照贴图进行了 RGBM 编码的平台上。
VertexLM:已对对象进行光照贴图时,用于顶点光照渲染中;在光照贴图进行了双 LDR 编码的平台上(一般是移动平台和老式桌面 GPU)。
ShadowCaster:将对象渲染成阴影投射。
ShadowCollector:将对象的阴影收集到正向(Forward) 渲染路径的屏幕空间缓存中。
RequireOptions 标记
表示通道只有在满足某些外部条件时才能被渲染。可通过 RequireOptions 标记来实现,其值为空格隔开的选项的字符串。Unity 当前支持的选项:
SoftVegetation: 仅当质量设置中的“软植被”(Soft Vegetation) 开启时渲染该通道。
另请参阅
也可为子着色器赋予标记,请参阅子着色器标记。
,