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) | High Definition Render Pipeline (HDRP) | Custom SRP | 
|---|---|---|---|---|
| ShaderLab: SubShader block | Yes | Yes | Yes | Yes | 
In ShaderLab, you define a SubShader by placing a SubShader block inside a Shader block.
Inside the SubShader block, you can:
LOD block. See assigning a LOD value to a SubShader.Tags block. See ShaderLab: assigning tags to a SubShader.Pass block. See ShaderLab: defining a Pass.PackageRequirements block. This makes Unity only run the SubShader if the required packages are installed. See ShaderLab: specifying package requirements.| Signature | Function | 
|---|---|
| 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.
        }
    }
}