Version: 2020.3
ShaderLab: assigning a custom editor
ShaderLab: assigning tags to a SubShader

ShaderLab: defining a SubShader

To define a SubShader in ShaderLab, you use a SubShader block. This page contains information on using SubShader blocks.

For information on how a Shader object works, and the relationship between Shader objects, SubShaders and Passes, see Shader objects introduction.

概要

A Shader object contains one or more SubShaders. SubShaders let you define different GPU settings and shader programs for different hardware, render pipelines, and runtime settings. Some Shader objects contain only a single SubShader; others contain multiple SubShaders to support a range of different configurations.

レンダリングパイプラインの互換性

Feature name Built-in Render Pipeline Universal Render Pipeline (URP) HD レンダーパイプライン (HDRP) Custom SRP
ShaderLab: SubShader block

Using the SubShader block

In ShaderLab, you define a SubShader by placing a SubShader block inside a Shader block.

Inside the SubShader block, you can:

Signature 機能
SubShader
{
    <optional: LOD>
    <optional: tags>
    <optional: commands>
    <One or more Pass definitions>
}
Defines a SubShader.

You can define as many Passes as you like within a SubShader.

This example code demonstrates the syntax for creating a Shader object that contains a single SubShader, which in turn contains a single Pass.

Shader "Examples/SinglePass"
{
    SubShader
    {
        Tags { "ExampleSubShaderTagKey" = "ExampleSubShaderTagValue" }
        LOD 100

         // ShaderLab commands that apply to the whole SubShader go here. 

        Pass
        {                
              Name "ExamplePassName"
              Tags { "ExamplePassTagKey" = "ExamplePassTagValue" }

              // ShaderLab commands that apply to this Pass go here.

              // HLSL code goes here.
        }
    }
}
ShaderLab: assigning a custom editor
ShaderLab: assigning tags to a SubShader