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) 开启时渲染该通道。

另请参阅

也可为子着色器赋予标记,请参阅子着色器标记。

,