UsePass 命令插入来自另一个 Shader 对象的指定通道。可以使用此命令来减少着色器源文件中的代码重复。
有关在 ShaderLab 代码中向通道添加名称的信息,请参阅 ShaderLab:向通道添加名称。
功能名称 | 内置渲染管线 | 通用渲染管线 (URP) | 高清渲染管线 (HDRP) | 自定义 SRP |
---|---|---|---|---|
UsePass | 是 | 是 | 是 | 是 |
签名 | 功能 |
---|---|
UsePass "Shader object name/PASS NAME IN UPPERCASE" |
从指定的 Shader 对象插入指定的通道。 如果指定的 Shader 对象包含多个子着色器,Unity 将遍历该子着色器,直到找到第一个包含具有给定名称的通道的受支持的子着色器。有关 Unity 如何确定是否支持某个子着色器的信息,请参阅 Shader 对象简介。 如果子着色器包含多个同名通道,Unity 将返回它找到的最后一个通道。 如果 Unity 没有找到匹配的通道,则会显示错误信息。 |
此示例代码创建一个名为 NamedPass 的 Shader 对象,其中包含名为 ExampleNamedPass 的通道。
Shader "Examples/ContainsNamedPass"
{
SubShader
{
Pass
{
Name "ExampleNamedPass"
// 此处是通道内容的其余部分。
}
}
}
此示例代码创建一个名为 UseNamedPass 的 Shader 对象,该对象使用上述示例代码中的指定通道。
Shader "Examples/UsesNamedPass"
{
SubShader
{
UsePass "Examples/ContainsNamedPass/EXAMPLENAMEDPASS"
}
}