Version: 2020.3
ShaderLab: カスタムエディターの割り当て
ShaderLab: タグを 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.

Render pipeline compatibility

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

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 Function
    <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"
        Tags { "ExampleSubShaderTagKey" = "ExampleSubShaderTagValue" }
        LOD 100

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

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

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

              // HLSL code goes here.
ShaderLab: カスタムエディターの割り当て
ShaderLab: タグを SubShader に割り当てる
Copyright © 2020 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。