ShaderLab文法: Name
ShaderLab syntax: Stencil

ShaderLab文法: BindChannels

BindChannels コマンドにより,頂点データがグラフィック ハードウェアにどのようにマッピングされるかを指定できます。

BindChannels は,プログラム可能な頂点シェーダの使用タイミングには影響しません。その場合,バインディングは頂点 シェーダ入力で制御されます。

デフォルトでは,Unity がバインディングを算定しますが,カスタムのバインディングを使用したい場合もあるでしょう。

例えば,1 つ目のテクスチャ ステージで使用されるよう設定された 1 つ目の UV と 2 つ目のテクスチャ ステージで使用されるように設定された 2 つ目の UV をマッピングするか,頂点色を考慮するようハードウェアに指示できます。

構文

    BindChannels { Bind "source", target }

ハードウェアの ターゲット に頂点データの ソース マップを指定します。

ソース は,次のうちのいずれかになります:

  • Vertex: 頂点の位置
  • Normal: 頂点の法線
  • Tangent: 頂点の接線
  • Texcoord: 1 つ目の UV 座標
  • Texcoord1: 2 つ目の UV 座標
  • Color: 頂点ごとの色

ターゲット は,次のうちのいずれかになります。

  • Vertex: 頂点の位置
  • Normal: 頂点の法線
  • Tangent: 頂点の接線
  • Texcoord0, Texcoord1, …: 対応するテクスチャ ステージに対するテクスチャ座標
  • Texcoord: すべてのテクスチャ ステージに対するテクスチャ座標
  • Color: 頂点の色

詳細

Unity には,ターゲットと,それにマッピングされるソースに関して厳しい制約があります。 ソースと目標は, Vertex , Normal , Tangent および Color に対して一致する必要があります。 メッシュからのテクスチャ ( Texcoord および Texcoord1 ) はテクスチャ座標のターゲット (すべてのテクスチャ ステージに対しては Texcoord ,指定したステージに対して, TexcoordN ) にマッピングできます。

BindChannels に対して,通常,次の 2 つの使用事例があります。

  • 頂点色を考慮するシェーダ。
  • 2 つの UV セットを使用するシェーダ。

// Maps the first UV set to the first texture stage
// and the second UV set to the second texture stage
BindChannels {
   Bind "Vertex", vertex
   Bind "texcoord", texcoord0
   Bind "texcoord1", texcoord1
}
// Maps the first UV set to all texture stages
// and uses vertex colors
BindChannels {
   Bind "Vertex", vertex
   Bind "texcoord", texcoord
   Bind "Color", color
}
ShaderLab文法: Name
ShaderLab syntax: Stencil