ShaderLab文法:プロパティ
ShaderLab文法: Pass

ShaderLab文法:サブシェーダ

Unityの各シェーダはサブシェーダの一覧から構成されます。Unityがメッシュを描画するとき,使用するシェーダをみつけ,ユーザのグラフィックカードで実行する最初のサブシェーダを選択します。

文法

    Subshader { [Tags] [CommonState] Passdef [Passdef ...] }

サブシェーダを任意のオプションのタグ,Common State(通常状態),パス定義の一覧とともに定義します。

詳細

サブシェーダはrendering passes の一覧を定義し,任意のオプションとして全てのパスに共通のState(状態)を設定します。追加で,サブシェーダの特定のTags を設定できます。

Unityがレンダリングするサブシェーダを選択するとき,定義された各パスごとに(光の相互作用によっては更に多く)オブジェクトを1回レンダリングします。オブジェクトのレンダリングは高価な処理であるため,シェーダを出来るかぎり最小の量のパスで定義すべきです。当然,いくつかのグラッフィクスのハードウェアでは必要なエフェクトを1回のパスでは実現できないことがあるので,その場合は複数のパスを使用するしかありません。

各パスの定義はregular Pass ,Use Pass ,またはGrab Pass のいずれかです。

パス定義で記述できるステートメントはサブシェーダの記述ブロックでも現れることがあります。これにより全てのパスが“共有の” State(状態)を使用することが出来ます。

// ...
SubShader {
    Pass {
        Lighting Off
        SetTexture [_MainTex] {}
    }
}
// ...

このサブシェーダではひとつのパスを定義し,全てのライティングをオフにして,単に_MainTexという名前のテクスチャをもつメッシュを表示します。

ShaderLab文法:プロパティ
ShaderLab文法: Pass