2

次のような 3D ゲームに単純な稲妻効果を実装しています。

http://www.krazydad.com/bestiary/bestiary_lightning.html

私はopengl ES 2.0を使用しています。電気ボルトを構成する線は、どの角度から見ても「ソリッド」に見える必要があるため、これを 3D 環境でレンダリングするための最も見栄えがよく、最もパフォーマンス効率の高い方法は何かを考えています。

線の太さの効果を作成するために、X クロスで線分ごとに 2 つの平面を生成することを考えていました。何らかの種類のオフの加算ブレンディング モードを使用して、深度バッファーの書き込みを無効にすることによるレンダリング。アルファチャンネルを備えた電気的なテクスチャを使用して、各線分をテクスチャリングします。

ただし、この方法を使用して必要な三角形リストを生成することによるパフォーマンスの低下について少し心配しています。私のゲームでは、同時に多数の稲妻が生成される可能性があるためです。しかし、稲妻の長さと太さは大きく異なるため、引き伸ばされて正しい位置を指している稲妻のアニメーション 3D オブジェクトを単純に使用するのは見栄えがよくないと思います。これが最初のアイデアでした。

後処理パスで投影された終点間の 2D 線を使用して稲妻をレンダリングする別のアプローチを考えていました。私の場合の遠近効果は無視できるので、それはうまくいくはずです。

ここで最善のアプローチに関する良いアイデアはありますか?

編集: nVidia からこのホワイト ペーパーを見つけました。

http://developer.download.nvidia.com/SDK/10/direct3d/Source/Lightning/doc/lightning_doc.pdf

これは、線分ごとにビルボードを配置するアプローチを使用し、フィルタリングを適用して、各ビルボードから生じるギャップとオーバーラップを滑らかにします。

かなり良い視覚的結果が得られるようですが、追加のフィルタリング パスについてはあまり満足していません。このゲームは携帯電話向けであり、そのようなステップにはかなりのコストがかかります。そして、結局のところ、モバイル デバイスでは遅い行列計算のオーバーヘッドが追加されるため、ビルボーディングは CPU の負荷もかなり高くなります。

4

2 に答える 2

2

nVidia の論文で提案されているようなことをすることになりましたが、後処理ステップの必要性を避けるために、さまざまな種類の分岐角度にさまざまな種類のテクスチャを使用して、セグメント コーナーのギャップとオーバーラップを回避しました。これは非常にうまくいきました。また、高価なビルボード マトリックス計算を回避するために、代わりに、より 2D のアプローチを使用して線分を描画しましたが、線分内の各頂点の深さの値を手動で計算しました。これにより、許容できるパフォーマンスとビジュアルの両方が得られます。

于 2011-12-27T10:48:25.883 に答える
0

おそらくシェーダーを使用したアニメーションテクスチャは、これを処理するための最速の方法である可能性があります。

ジオメトリの生成とレンダリングはエフェクトの品質を制限し、CPU時間、メモリ帯域幅、描画呼び出しにかなりの時間がかかる可能性があります。

クワッドで単一のアニメーションテクスチャを使用するか、手続き型の稲妻を作成するシェーダーを使用すると、一定の速度が得られ、エフェクトの実装がはるかに簡単になります。そのため、この質問は興味深いかもしれません。

于 2011-12-27T03:53:15.997 に答える