私はいくつかのインスタンス化を行う頂点シェーダー (2.0) を持っています - 各頂点は配列へのインデックスを指定します。
次のような配列がある場合:
float instanceData[100];
コンパイラは、100 個の定数レジスタを割り当てます。各定数レジスタは であるfloat4
ため、必要なスペースの 4 倍を割り当てています。
定数レジスタを 25 個だけ割り当て、それぞれに 4 つの値を格納する方法が必要です。
理想的には、CPU と GPU の両方で のように見えるメソッドが必要float[]
です (現在、 を呼び出しEffectParamter.SetValue(Single[])
ており、XNA を使用しています)。ただし、手動でのパックとアンパックfloat4[]
もオプションです。
また、これを行うことによるパフォーマンスへの影響は何ですか? それは実際にそれだけの価値がありますか?(私にとっては、これにより 4 ~ 5 回ごとに約 1 つのバッチが節約されます)。