Version: 2021.3
ShaderLab: 古いテクスチャ合成
HLSL in Unity

ShaderLab: 古い頂点データチャンネルマッピング

ノート: このページの ShaderLab 機能は廃止されたものであり、後方互換性のためだけに文書化されています。シェーダーオブジェクトのソースファイルに HLSL コードが含まれている場合、Unity はこれらのコマンドを完全に無視します。シェーダーのソースファイルに HLSL コードが含まれていない場合、Unity はインポート時にこれらのコマンドを通常のシェーダープログラムにコンパイルします。

レンダーパイプラインの互換性

機能名 ビルトインレンダーパイプライン ユニバーサルレンダーパイプライン (URP) HD レンダーパイプライン (HDRP) カスタム SRP
レガシー頂点データのチャンネルマッピング 不可 不可 不可

概要

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: 頂点接線
  • 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: 古いテクスチャ合成
HLSL in Unity