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