ShaderLab文法: Name
ShaderLab syntax: Stencil

ShaderLab文法: BindChannels

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

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