Version: 2021.1
言語: 日本語
ShaderLab: カスタムエディターの割り当て
ShaderLab: タグを SubShader に割り当てる

ShaderLab: SubShader の定義

ShaderLab で SubShader を定義するには、SubShader ブロックを使用します。このページでは、SubShader ブロックの使用について説明します。

シェーダーオブジェクトの仕組みや、シェーダーオブジェクト、SubShader、Pass の関係については、シェーダーオブジェクトの基礎 を参照してください。

概要

シェーダーオブジェクトには、1 つまたは複数の SubShader が含まれます。SubShader により、異なるハードウェア、レンダリングパイプライン、ランタイム設定に応じて、異なる GPU 設定とシェーダプログラムを定義することができます。シェーダーオブジェクトには 1 つの SubShader しか含まれていないものもあれば、さまざまな構成をサポートするために複数の SubShader を含むものもあります。

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

機能名 ビルトインレンダーパイプライン ユニバーサルレンダーパイプライン (URP) HD レンダーパイプライン (HDRP) カスタム SRP
ShaderLab:サブシェイダーブロック

SubShader ブロックの使用

ShaderLab では、SubShader ブロックを Shader ブロック内に配置して SubShader を定義します。

SubShader ブロック内で、以下を行うことができます。

シグネチャ 機能
SubShader
{
    <optional: LOD>
    <optional: tags>
    <optional: commands>
    <One or more Pass definitions>
}
SubShader を定義します。

SubShader 内で数の制限なく Pass を定義することができます。

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

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

         // SubShader 全体に適用される ShaderLab コマンドをここに記述

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

              // この Pass に適用される ShaderLab コマンドをここに記述

              // HLSL コードをここに記述
        }
    }
}
ShaderLab: カスタムエディターの割り当て
ShaderLab: タグを SubShader に割り当てる