Version: Unity 6.5 (6000.5)
Language : English
SubShader in ShaderLab reference
LOD directive in ShaderLab reference

SubShader block in ShaderLab reference

Important: The Built-In Render Pipeline is deprecated and will be made obsolete in a future release.
It remains supported, including bug fixes and maintenance, through the full Unity 6.7 LTS lifecycle.
For more information on migration, refer to Migrating from the Built-In Render Pipeline to the Universal Render Pipeline and Render pipeline feature comparison.

To define a SubShader in ShaderLabUnity’s language for defining the structure of Shader objects. More info
See in Glossary
, you use a SubShader block. This page contains information on using SubShader blocks.

Inside the SubShader block, you can:

To target a subshader at a specific render pipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info
See in Glossary
, use the RenderPipeline tag. For more information, refer to SubShader tags in ShaderLab reference.

Render pipeline compatibility

Feature name Universal Render Pipeline (URP) High Definition Render Pipeline (HDRP) Custom SRP Built-in Render Pipeline
ShaderLab: SubShader block Yes Yes Yes Yes

Syntax

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.

Additional resources

SubShader in ShaderLab reference
LOD directive in ShaderLab reference