本页面包含在__ ShaderLab__Unity 用于定义着色器对象结构的语言。更多信息
See in Glossary 代码中使用 Tags 代码块为通道分配标签的信息。同时还包含了使用 LightMode 标签的信息。
如需了解着色器对象的工作原理以及着色器对象、子着色器与通道之间的关系,请参阅着色器对象基础知识。
| 功能名称 | 通用渲染管线 (URP) | 高清渲染管线 (HDRP) | 自定义 SRP | 内置渲染管线 |
|---|---|---|---|---|
| ShaderLab:通道标签代码块 | 是 | 是 | 是 | 是 |
| ShaderLab:LightMode 通道标签 | 是 | 是 | 是 | 是 |
| 签名 | 功能 |
|---|---|
Tags {"<name1>" = "<value1>" "<name2>" = "<value2>"} |
为通道应用给定标签。 可添加任意数量的标签。 |
| 签名 | 功能 |
|---|---|
| “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 通道标签来指定 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 通道标签会根据项目设置启用或禁用通道。
| 值 | 功能 |
|---|---|
SoftVegetation |
仅当启用 QualitySettings-softVegetation 时渲染此通道。 |