0

DX9 でシャドウ マッピングを実行するコードを作成しようとしています。1 つの光源からのシャドウ マップのみを取得したサンプル コード。複数の光源からのシャドウ マップに実行可能なパフォーマンスはありますか? それ以外の場合、私のシーンは非常に軽量でレンダリングできます。テクスチャがなく、数百または数千の頂点しかありません。

問題は、私のシーンが太陽に近い宇宙で行われることです。太陽を球体として作成し、各頂点を光源としてレンダリングします。これにより、さまざまな SF 宇宙船の効果にも優れた効果が得られます。しかし、コードを読んでみると、これが私のパフォーマンスを台無しにするのではないかと非常に懸念しており、私が探している信じられないほどの照明効果が得られるかどうかは完全にはわかりません. 私はここでやり過ぎですか?

4

3 に答える 3

1

それぞれが影を落とす複数のライトをレンダリングする簡単な方法は ------>

ループ内のすべてのライトに対して、次の操作を行います::

{

Offscreen RenderTarget の黒をクリアします。

Offscreen RenderTarget で、現在のライトのみを使用してシーンをレンダリングします。

次に Blending(Add, One to One) をオンにして、Offscreen RenderTarget をメイン バックバッファに描画/オーバーレイします。

}

すべてのライトがレンダリングされたら、シーンを提示します。ライトは最終的に足し算に過ぎないので、好きなだけライトをレンダリングし続けることができます。この方法は、異なる照明を使用しているかどうかに関係なく機能します。また、ライトごとに影をオンまたはオフにすることもできます。

これのいずれかが不明確であり、より良い説明が必要な場合はお知らせください...

于 2011-01-04T20:19:03.813 に答える
0

「高度な」エフェクト/テクニックの DX または OGL コードを探している場合は、Humus 3Dを見てください。シャドウ マップのサンプルがいくつかあります。1 つには複数のソースが必要です。GPU Gems 3 のこのセクションも興味深いかもしれません。

于 2011-01-03T09:11:02.133 に答える
0

TBHあなたはただやり過ぎです。大きな球体のすべての頂点からの光源が多すぎます。シャドウのソフト エッジを取得した後である場合は、一般的にソフト シャドウイングを検討する方がはるかに優れています。

例を挙げると、Half-life 2 では、シャドウ マップを別のレンダー バッファーにレンダリングすることで (メイン レンダー バッファーの Z バッファーを使用しながら) ソフト シャドウイングを実現しました。次に、そのバッファをぼかして、メインのレンダリング バッファに適用します。結果はかなり見栄えの良い影です...

于 2011-01-08T00:34:24.233 に答える