本节介绍特定于 URP 的__ ShaderLab__Unity 用于定义着色器对象结构的语言。更多信息
See in Glossary 通道 (ShaderLab Pass) 标签。
注意:Unity 不支持以下 LightMode 标签:
Always、ForwardAdd、PrepassBase、PrepassFinal、Vertex、VertexLMRGBM、VertexLM。
此标签的值可以让管线确定在执行渲染管线 (Render Pipeline) 的不同部分时使用哪个通道 (Pass)。
如果没有在管线中设置 LightMode 标签,URP 将使用该通道的 SRPDefaultUnlit 标签值。
LightMode 标签可以具有以下值。
| 属性 | 描述 |
|---|---|
| UniversalForward | 该通道会渲染对象几何体并评估所有光源影响。URP 在前向渲染路径 (Forward Rendering Path) 中使用此标签值。 |
| UniversalGBuffer | 该通道会渲染对象几何体,但不评估任何光源影响。在 Unity 必须在延迟渲染路径 (Deferred Rendering Path) 中执行的通道中使用此标签值。 |
| UniversalForwardOnly | 此通道会渲染对象几何体并评估所有光源贡献,类似于 LightMode 具有 UniversalForward 值的情况。与 UniversalForward 的不同之处在于,URP 可以将通道用于前向渲染路径和延迟渲染路径。 如果 URP 使用延迟渲染路径时某个通道必须使用前向渲染路径渲染对象,则请使用此值。例如,如果 URP 使用延迟渲染路径渲染场景,而场景中包含的对象的着色器数据不适合 GBuffer(例如透明涂层 (Clear Coat) 法线),则请使用此标签。 如果着色器必须在前向渲染路径和延迟渲染路径中渲染,则请声明两个具有 UniversalForward 和 UniversalGBuffer 标签值的通道。如果着色器必须使用前向渲染路径进行渲染(无论 URP 渲染器使用哪种渲染路径),则请仅声明 LightMode 标签设置为 UniversalForwardOnly 的通道。如果使用 SSAO 渲染器功能 (SSAO Renderer Feature),请添加 LightMode 标签设置为 DepthNormalsOnly 的通道。有关更多信息,请查看 DepthNormalsOnly 值。 |
| DepthNormalsOnly | 将此值与延迟渲染路径中的 UniversalForwardOnly 结合使用。此值允许 Unity 在深度和法线预通道中渲染着色器。在延迟渲染路径中,如果缺少具有 DepthNormalsOnly 标签值的通道,则 Unity 不会在网格 (Mesh) 周围生成环境光遮挡。 |
| Universal2D | 该通道会渲染对象并评估 2D 光源影响。URP 在 2D 渲染器 (2D Renderer) 中使用此标签值。 |
| ShadowCaster | 该通道从光源的角度将对象深度渲染到阴影贴图或深度纹理中。 |
| DepthOnly | 该通道仅从摄像机的角度将深度信息渲染到深度纹理中。 |
| Meta | Unity 仅在 Unity 编辑器中烘焙光照贴图时执行该通道。Unity 在构建播放器时会从着色器中剥离该通道。 |
| SRPDefaultUnlit | 使用此 LightMode 标签值可在渲染对象时绘制额外的通道。应用程序示例:绘制对象轮廓。此标签值对前向和延迟渲染路径均有效。当通道没有 LightMode 标签时,URP 将此标签值用作默认值。 |
| MotionVectors | 使用此标签向着色器添加运动矢量支持。有关更多信息,请参阅 ShaderLab 的运动矢量通道。 |
Unity 在延迟渲染路径中使用此标签。
UniversalMaterialType 标签可以具有以下值。
如果未在通道中设置此标签,Unity 将使用 Lit 值。
| 属性 | 描述 |
|---|---|
| Lit | 此值指示着色器类型为光照 (Lit)。在 G 缓冲区通道期间,Unity 使用模板来标记使用光照 (Lit) 着色器类型(镜面反射模型为 PBR)的像素。 如果未在通道中设置标签,则 Unity 默认使用此值。 |
| SimpleLit | 此值指示着色器类型为简单光照 (SimpleLit)。在 G 缓冲区通道期间,Unity 使用模板来标记使用简单光照 (SimpleLit) 着色器类型(镜面反射模型为 Blinn-Phong)的像素。 |