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