ノート: このページの ShaderLab 機能は古いものであり、後方互換性のためだけに文書化されています。シェーダーオブジェクトのソースファイルに HLSL コードが含まれている場合、Unity はこれらのコマンドを完全に無視します。シェーダーのソースファイルに HLSL コードが含まれていない場合、Unity はインポート時にこれらのコマンドを通常のシェーダープログラムにコンパイルします。
機能名 | ビルトインレンダーパイプライン | ユニバーサルレンダーパイプライン (URP) | HD レンダーパイプライン (HDRP) | カスタム SRP |
---|---|---|---|---|
レガシー頂点データのチャンネルマッピング | あり | なし | なし | なし |
BindChannels コマンドを使うと、頂点データのグラフィックスハードウェアへのマッピング方法を指定することができます。デフォルトでは Unity がバインディングを計算してくれますが、場合によってはカスタムのものを使用したい場合があるかもしれません。
例えば、1 つ目のテクスチャステージで使用されるよう設定された 1 つ目の UV と 2 つ目のテクスチャステージで使用されるように設定された 2 つ目の UV をマッピングするか、頂点色を考慮するようハードウェアに指示できます。
BindChannels { Bind "source", target }
ハードウェアの ターゲット に頂点データの ソース マップを指定します。
ソース は、次のうちのいずれかになります:
ターゲット は、次のうちのいずれかになります。
Unity には、ターゲットと、それにマッピングされるソースに関して厳しい制約があります。ソースと目標は、Vertex、Normal、Tangent および Color に対して一致する必要があります。メッシュからのテクスチャ ( Texcoord および Texcoord1 ) はテクスチャ座標のターゲット (すべてのテクスチャステージに対しては Texcoord、指定したステージに対して、TexcoordN ) にマッピングできます。
BindChannels に対して、通常、次の 2 つの使用事例があります。
// 最初の 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
}