包含此页的版本:
不含此页的版本:
A Pass 是着色器在 GPU 上运行的程序。更多信息
请参阅术语表对象。它包含用于设置 GPU 状态的说明,以及在 GPU 上运行的着色器程序。
简单着色器对象可能只包含单个通道,但更复杂的着色器可以包含多个通道。您可以使用单独的通道来定义Shader 对象Shader 类的实例,Shader 对象是着色器程序和 GPU 指令的容器,以及告诉 Unity 如何使用它们的信息。将它们与材质一起使用,以确定场景的外观。更多信息
请参阅术语表工作方式不同;例如,需要更改渲染状态的部件、不同的着色器程序或不同的LightMode传递标签。
注意:在基于 Scriptable 的渲染管线中渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
请参阅术语表,你可以使用 RenderStateBlock 来更改 GPU 上的渲染状态,而无需单独的 Pass。
定义常规传入ShaderLabUnity 用于定义 Shader 对象结构的语言。更多信息
请参阅术语表,则放置一个Pass块SubShader块。
您还可以定义两种特殊类型的 Pass,使用UsePass或GrabPass命令。有关这些命令的信息,请参阅 ShaderLab 命令:UsePass 或 ShaderLab 命令:GrabPass。
通行证可以有一个名称。您需要在UsePass命令,以及某些 C# API 中。通道的名称在帧调试器工具中可见。
要在 ShaderLab 中为 Pass 分配名称,请将Name块Pass块。
在内部,Unity 将名称转换为大写。在 ShaderLab 代码中引用名称时,必须使用大写变体;例如,如果值为“example”,则必须将其引用为 EXAMPLE。
如果同一子着色器中的多个 Pass 具有相同的名称,则 Unity 会在代码中使用第一个 Pass。
从 C# 访问通行证的名称脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表,您可以使用 Material.FindPass、Material.GetPassName 或 ShaderData.Pass.Name 等 API。
注意:Material.GetShaderPassEnabled 和 Material.SetShaderPassEnabled 不按名称引用通道;相反,它们使用 LightMode 标签的值引用通道。
此示例代码演示了创建包含单个子着色器对象的语法,该对象又包含单个 Pass。
Shader "Examples/SinglePass"
{
SubShader
{
Pass
{
Name "ExamplePassName"
Tags { "ExampleTagKey" = "ExampleTagValue" }
// ShaderLab commands go here.
// HLSL code goes here.
}
}
}