Version: 2018.2
ShaderLab: 古い Fog
ShaderLab: UsePass

ShaderLab: 旧 BindChannels

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

Note: BindCannel は頂点シェーダー入力によってバインドが制御されている場合のように、頂点シェーダーと Fragment シェーダーのプログラミング が使用されているときはまったく効果がありません。最近では、固定間数頂点処理の代わりにプログラマブルシェーダーを使用するのが賢明です。

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

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

構文

BindChannels { Bind "source", target }

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

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

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

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

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

詳細

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

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

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

// 最初の UV の組を最初のテクスチャのステージへ、
//  2 番目の UV の組を2 番目のテクスチャのステージへマップ
BindChannels {
   Bind "Vertex", vertex
   Bind "texcoord", texcoord0
   Bind "texcoord1", texcoord1
}
// 最初の UV の組をすべてのテクスチャのステージにマップ
// かつ頂点カラーを使用
BindChannels {
   Bind "Vertex", vertex
   Bind "texcoord", texcoord
   Bind "Color", color
}
ShaderLab: 古い Fog
ShaderLab: UsePass