Version: Unity 6.0 (6000.0)
语言 : 中文
ShaderLab 中的 Name 指令参考
ShaderLab 参考中的着色器代码块

ShaderLab 中的通道标签参考

本页面包含在__ ShaderLab__Unity 用于定义着色器对象结构的语言。更多信息
See in Glossary
代码中使用 Tags 代码块为通道分配标签的信息。同时还包含了使用 LightMode 标签的信息。

如需了解着色器对象的工作原理以及着色器对象、子着色器与通道之间的关系,请参阅着色器对象基础知识

渲染管线兼容性

功能名称 通用渲染管线 (URP) 高清渲染管线 (HDRP) 自定义 SRP 内置渲染管线
ShaderLab:通道标签代码块
ShaderLab:LightMode 通道标签

语法

签名 功能
Tags {"<name1>" = "<value1>" "<name2>" = "<value2>"} 为通道应用给定标签。

可添加任意数量的标签。

LightMode 标签

签名 功能
“LightMode” = “[值]” 设置此通道的 LightMode 值。

此标记的有效值取决于渲染管线。

LightMode 标签有效值

下表是内置渲染管线中 LightMode 通道标签的有效值。如需详细了解 LightMode 标签,请参阅 ShaderLab:使用通道标签

功能
Always 始终渲染;不应用任何光照。这是默认值。
ForwardBase 在前向渲染中使用;应用环境光、主方向光、顶点/SH 光源和光照贴图。
ForwardAdd 在前向渲染中使用;应用加算的逐像素光源,每个光源一条通道。
Deferred 在延迟渲染中使用;渲染 G 缓冲区。
ShadowCaster 将对象深度渲染到阴影贴图或深度纹理中。
MotionVectors 用于计算逐对象的运动矢量。
Vertex 用于旧版顶点光照渲染(当对象不进行光照贴图时);应用所有顶点光源。
VertexLMRGBM 用于旧版顶点光照渲染(当对象不进行光照贴图时),以及光照贴图为 RGBM 编码的平台(PC 和游戏主机)。
VertexLM 用于旧版顶点光照渲染(当对象不进行光照贴图时),以及光照贴图为双 LDR 编码的平台(移动平台)。
Meta 在常规渲染期间不使用此通道,仅用于光照贴图烘焙或__ Enlighten__Geomerics 出品的光照系统,在 Unity 中用于 Enlighten 实时全局光照。更多信息
See in Glossary
实时全局光照。详情请参阅光照贴图和着色器

PassFlags 标签

在内置渲染管线中,使用 PassFlags 通道标签来指定 Unity 提供给通道的数据。

功能
OnlyDirectional 仅在内置渲染管线中生效,且要求渲染路径为前向 (Forward)、并位于 LightMode 标签值为 ForwardBase 的通道。

Unity 仅向此通道提供主方向光和环境/光照探针数据。这意味着非重要光源的数据将不会被传递到顶点光源或球谐函数着色器变量。详情请参阅前向渲染通道

示例

Shader "Examples/ExamplePassFlag"
{
    SubShader
    {
        Pass
        {    
              Tags { "LightMode" = "ForwardBase" "PassFlags" = "OnlyDirectional" }
            
              // The rest of the code that defines the Pass goes here.
        }
    }
}

RequireOptions 标签

在内置渲染管线中,RequireOptions 通道标签会根据项目设置启用或禁用通道。

功能
SoftVegetation 仅当启用 QualitySettings-softVegetation 时渲染此通道。

其他资源

ShaderLab 中的 Name 指令参考
ShaderLab 参考中的着色器代码块