Version: 2021.3
ShaderLab: assigning a LOD value to a SubShader
ShaderLab: assigning a name to a Pass

ShaderLab: defining a Pass

To define a Pass in ShaderLab, use a Pass block. This page contains information on using Pass blocks. For information on how a Shader object works, and the relationship between Shader objects, SubShaders and Passes, see Shader object fundamentals.

概要

A Pass is the fundamental element of a Shader object. It contains instructions for setting the state of the GPU, and the shader programs that run on the GPU.

Simple Shader objects might contain only a single Pass, but more complex shaders can contain multiple Passes. You can use separate Passes to define parts of your Shader object that work differently; for example, parts that require a change to the render state, different shader programs, or a different LightMode Pass tag.

Note: In render pipelines based on the Scriptable Render Pipeline, you can use a RenderStateBlock to change the render state on the GPU, without requiring a separate Pass.

レンダーパイプラインの互換性

機能名 ビルトインレンダーパイプライン ユニバーサルレンダーパイプライン (URP) HD レンダーパイプライン (HDRP) カスタム SRP
ShaderLab: Pass block

Using the Pass block

To define a regular Pass in ShaderLab, you place a Pass block inside a SubShader block.

Inside the Pass block, you can:

You can also define two special types of Pass, using the UsePass or GrabPass commands. For information on those commands, see ShaderLab commands: UsePass or ShaderLab commands: GrabPass.

シグネチャ 機能
Pass
{
    <optional: name>
 <optional: tags>
    <optional: commands>
   <optional: shader code>
}
Defines a Pass.

このサンプルコードは、1 つの SubShader を含むシェーダーオブジェクトを作成するための構文を示しています。SubShader には 1 つの Pass が含まれます。

Shader "Examples/SinglePass"
{
    SubShader
    {
        Pass
        {                
              Name "ExamplePassName"
              Tags { "ExampleTagKey" = "ExampleTagValue" }

              // ShaderLab commands go here.

              // HLSL code goes here.
        }
    }
}
ShaderLab: assigning a LOD value to a SubShader
ShaderLab: assigning a name to a Pass