ShaderLab でシェーダーオブジェクトを定義するには、Shader ブロックを使用します。このページでは、Shader ブロックの使用に関する情報を掲載しています。
シェーダーオブジェクトの仕組みや、シェーダーオブジェクト、サブシェーダー、パスの関係については、シェーダーオブジェクトの基礎 を参照してください。
シェーダーオブジェクトは Unity 固有の概念で、シェーダープログラムやその他の情報のラッパーです。同一ファイル内に複数のシェーダープログラムを定義し、それらをどのように使用するかを Unity に伝えることができます。
シェーダーオブジェクトはネスト構造になっており、サブシェーダーやパスと呼ばれる構造に情報を整理します。
| 機能名 | ビルトインレンダーパイプライン | ユニバーサルレンダーパイプライン (URP) | HD レンダーパイプライン (HDRP) | カスタム SRP | 
|---|---|---|---|---|
| ShaderLab: シェーダーブロック | 可 | 可 | 可 | 可 | 
Shader ブロック内で、以下を行うことができます。
Properties ブロックを使って、マテリアルのプロパティを定義します。ShaderLab: マテリアルプロパティの定義 を参照してください。SubShader ブロックを使用して、1 つまたは複数のサブシェーダーを定義します。ShaderLab: SubShader の定義 を参照してください。Fallback ブロックを使用して、フォールバックのシェーダーオブジェクトを割り当てます。ShaderLab: フォールバックの割り当て を参照してください。| 署名 | 機能 | 
|---|---|
| Shader "<name>"{<optional: Material properties><One or more SubShader definitions><optional: custom editor><optional: fallback>} | 指定された名前のシェーダーオブジェクトを定義します。 | 
このサンプルコードは、シェーダーオブジェクトの基本的な構文と構造を示しています。この例のシェーダーオブジェクトは、1 つのパスを含む 1 つの SubShader を持っています。そのシェーダーオブジェクトは、Material プロパティ、CustomEditor、Fallbackを定義します。
Shader "Examples/ShaderSyntax"
{
    CustomEditor = "ExampleCustomEditor"
    Properties
    {
        // Material プロパティの宣言はここに記述
    }
    SubShader
    {
        // 残りの SubShader の定義はここに記述
        Pass
        {
           // Pass 定義のコードはここに記述
        }
    }
    Fallback "ExampleFallbackShader"
}
異なるレンダーパイプラインに対応するカスタムシェーダーの例については、カスタムシェーダーの例 を参照してください。