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

ShaderLab文法:サブシェーダ

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

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