1

私の質問は理論的には単純です - 顔ごとのデータをピクセルシェーダーに入力する最良の方法は何ですか? 単純な cbuffer 配列を介して挿入された場合、SV_PrimitiveID 値を使用してデータにアクセスできました。ただし、cbuffer ごとに 8096 の float という制限は、適度に詳細なモデルでは明らかに問題になります。

この方法に代わるものはありますか?おそらく別の頂点ストリームを使用していますか?

理想的には、頂点ごとにデータを入力しますが、データは面ごとであり、テクスチャ配列で検索される各面に使用するテクスチャのインデックスを保持します。頂点全体の texcoord データの補間は、頂点ごとに使用すると、このインデックスを台無しにしてしまいますよね? とにかく頂点ごとにそれを行うことがあれば、私はすべての耳です!

あなたが提供できる助けに感謝します。

4

1 に答える 1

2

ジオメトリ シェーダーは面ごとに実行され、ポリゴンごとのデータをピクセル シェーダーに渡すために使用できます。

三角形で使用すると、入力として 3 つの頂点を受け取り、3 つの頂点を出力しますが、基本的にこの時点で重複が排除されるため、1 つの頂点が複数の三角形間で共有されているという事実は、ジオメトリ シェーダー以降は問題になりません。uint は補間されないので、その点で問題はありません。インデックスは三角形の「主要な」頂点から取得されます。

MSDN のジオメトリ シェーダー

于 2014-02-17T17:38:26.860 に答える