質問

私は(基本的な)ボクセルエンジンを運営しています(そして基本的には基本的に作品を想定しています)。 https://www.youtube.com/watch?v=q_tdegioots (私のゲームではありません)。
水値はフロートの3Dアレイに保存され、0.05秒ごとにそれは下のボクセルを調べることによって水の流れを計算し(Y-1、X-1、X + 1、Z-1、Z + 1)を追加する。値。
このシステムは少量の水のために細かい(70以上のFPS)機能していますが、私が8+チャンクの水の計算を開始すると、それは多すぎる。 (私はすべてのレンダリングまたはメッシュの作成を無効にして、それがボトルネックであるかどうかを確認します。その純粋にフロー計算)。
私は非常に経験豊富なプログラマーではありませんので、私はすでに行ったようにコルーチンで計算を行うことを除いて、最適化の開始先を知っていません。
この投稿で: https://gamedev.stackexchange.com/questions/ 55414 / water-with-water-with-water-with-water-with-with-a(底部近く)の右arialは、 compute shader で実行することを示唆しています。これは私に行くための方法ですか?そして私はそのようなことについてどのように行きますか?
あらゆる助けが大歓迎です。

役に立ちましたか?

解決

ボクセルベースのシミュレーションを実際に計算している場合は、サイズが大きくなるにつれて幾何学的に計算数を拡大することになりますので、大量の電力を迅速に実行できます。

計算シェーダは、慣れている非常に異なるプログラミングパラダイムであるが、非常に異なるプログラミングパラダイムであることに最適です。計算シェーダは、バッファの内容(すなわち、米国の民間人のための「テクスチャ」)を見ると、それに非常に迅速に物事を実行します - あなたの場合、バッファはおそらくピクセル値が水セルを表すバッファ/テクスチャです。増加するように本当に簡単なことをしたい場合は、Compute Shaderの上下に、GPUの並列処理能力を使用して本当に速いです。

ハード部品は、GPUが並列処理の最適化。これは、「texela.value += texelb.value」のようなコードを書くことができません。他のテクセルを参照する必要があります。どういうわけかテクスチャを読む必要があります。 shader / "rel=" nofollow ">このGLの例はぼかしを実装するためにこれを実行します、他のものはテクスチャを繰り返し処理し、結果を一時的なテクスチャに入れてからそれを再処理します。

10,000フィートのレベル:はい、計算シェーダはこの種の問題のための良いツールであり、それは自己同様の計算のトンを含みます。しかし、それはバットをやめるのは簡単ではありません。従来のシェーダプログラミングを行っていない場合は、GPUの作業方法に慣れることを最初に検討したいと思うかもしれません。本当に基本的なツールでさえ(IF-THE-SHOLEまたはLOOPS)では、GPUプログラミングでは非常に異なるパフォーマンスへの影響や用途があります。違いを回避するのに時間がかかります。この書き方の時点で(1/10/13) nvidiaと醜いものが計算するためのイントロを提供していますシェーダコースこれはスピードを上げるための良い方法かもしれません。

FWIWあなたはまた、あなたのオーディエンスを制限するかもしれない計算シェーダのためのかなりモダンなハードウェアも必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top