1

学習経験として、私は即時モードで管理されるDirectX9アプリケーションを作成しています。

グーローシェーディングをスムーズにするために、シーン内のすべての三角形の頂点法線を手動で計算しています。

これは期待どおりに機能しますが、これは最も効率的なアプローチではないと思います。GPUにこれを実行させることは可能ですか?

4

2 に答える 2

3

理論的には、頂点シェーダー内に頂点法線を生成できます。ただし、そのシェーダーを使用してメッシュをレンダリングするたびに計算が必要になるため、事前に生成してみませんか。

レンダリングの前にそれらを生成したいが、CPUの代わりにGPUを使用したい場合は、一度だけ実行することをわざわざ高速化する価値はないと思います。さらに、DX9に計算された頂点情報をシェーダーから戻す方法があるかどうかはわかりません(DX10にはあります)。

全体として、ほとんどの場合、最善の方法は従来の方法です。メッシュを含むデータファイルを保存するプログラムで頂点法線を計算します。これは事前計算ステップとして実行します。通常、メッシュがMaxやMayaなどの3Dパッケージからのものである場合は、法線に芸術的な情報があるため、メッシュ全体が完全に滑らか(またはファセット)であることがわかっていない限り、一般的なケースでは計算できません。 。

于 2009-07-20T13:17:17.817 に答える
2

これこれを確認してください。

于 2009-07-20T12:59:10.157 に答える