これまでは、UV、ColorPerVertex、頂点単位のユーザ データは、インデックスによって参照されていました。インデックスの使用は困難なため、パイプラインに課題が生じます。
今回、既定で、各データの名前を提供するシェイプ ノードにデータ ブロックが追加されました(UV、CVP、頂点単位のカスタム データ)。シェーダにパスされる string 値の読み出しと分析のために、シェーダ API からこのテーブルを照会できます。
シェーディング ネットワークを多数のオブジェクトに割り当てることができ、Maya シーン内で明示的に接続を作成しなくても、レンダー時に ColorPerVertex と UV を割り当てることができます。レンダー時に、シェーダは名前のリファレンスをインスタンス単位または shapeNode 単位のインデックスに変換します。
このデータ ブロックの例を以下に示します。
data "pPlaneShape1:PerVertexNomenclature" "PerVertexNomenclature" ( "magicnumber" 5149248936, "tex" // texture space or Maya UVs [ { "name" "uvset1", "index" 0 } { "name" "myUVset", "index" 1 } { "name" "bakeUV", "index" 2 } ], "cpv" // color per vertex (RGB only) [ { "name" "ColorSet1", "index" 3 } { "name" "CPV_DirtMask", "index" 4 } { "name" "CPV_WetMask", "index" 5 } ], "cudpv" //custom data per vertex [ { "name" "LightIndexField", "index" 6 } ] ) object "pPlaneShape1" visible on shadow 3 transparency 3 reflection 3 refraction 3 finalgather 3 face both tagged trilist vertex 4 p n t 2 b 2 u 3 triangle 2 [ vertex data goes here ] [ 0 0 1 3 0 3 1 2 ] end trilist data "pPlaneShape1:PerVertexNomenclature" end object shader "DirtMapCPVLookup1" "myCustomVertexColor" ( "cpvname" "CPV_Dirtmask", .... )
これをオフにするには、次のいずれかの方法を選択します。