レイトレーシングの高さフィールドの最新のアルゴリズムは何ですか?


15

長年にわたって、レイトレーサーで高さフィールドの地形を描画するためのさまざまな手法に関する多くの論文がありました。一部のアルゴリズムは、グリッドを直接(またはクアッドツリーを介して)レイマーチします。また、地形をポリゴンメッシュに変換し、標準の光線と三角形の交差テストを使用するものもあります。この研究は過去数年で進んでいるようで、過去10年で書かれた論文を見つけるのは難しいですが、メモリとコンピューティング(CPUとGPUの両方)のバランスは依然として変化しています。

現在、どのようなアルゴリズムがハイエンドデスクトップマシンで最高のパフォーマンスを提供しますか?または、単一の答えがない場合、現在の最適なアルゴリズムのパフォーマンス特性はどのように異なりますか?


スクリーン空間反射:深度とフレームバッファを使用して高さフィールドを作成し、レイトレースして粗い反射を取得します。私は詳細については知りませんが、Crysis、Killzone、最近のFrostbiteなどは、それを高速化するために洗練されたテクニックを使用していると思います。これを調べましたか?
デビッドクリ

1
@DavidKuriありがとう、それはコアレイマーチングを高速にする方法の良い指針です。pre-computing mipmapsやmin-max quadtreeなど、画面スペースのトレースではあまりうまく機能しない、より静的な高さフィールドには多くの最適化が可能なはずですので、私はまだ答えを期待していますそれをカバーしています。
ダンハルム

ちょっとダンところで、CPUまたはGPUソリューションをお探しですか?そして、リアルタイムまたは非リアルタイムレンダリング?
アランウルフ

@AlanWolfe私が使用しているのはGPUと非リアルタイム(つまり、16ミリ秒で管理できる最高の画質ではなく最大スループット)ですが、CPUまたは主に対話型レンダラーの高速な興味深い回答を引き続き支持します。
ダンハルム

高さマップから符号付き距離フィールドを作成してみてください。これは基本的に、次のサーフェスまでの距離を格納する3Dテクスチャです。これにより、「光線をより速く移動」できます。アンリアルエンジン4は、これを一般的なミッドレンジアンビエントオクルージョン、ソフトシャドウ、テレインシャドウに使用します
-user1888

回答:


11

現在の最新技術については、このペーパーを参照してください:「高速、正確、およびスケーラブルな動的高さフィールドレンダリングのための最大ミップマップ」、Tevs et al。2008年

基本的な考え方は、地形の広い領域で最大値を知ることにより、多くのスペースをスキップすることです。光線がその上にとどまる場合は、次の大きなエリアにスキップします。

図8を見ると、基本的な線形ステッピングと最大ミップマップの比較がわかります。リニアステッピングの結果は200ステップになります。これは、最新のGPUでリアルタイムに実行できますが、実際にはまだ低速です。最大ミップマップは、シェーダーですべて約10ステップで同じことを行います。


論文自体は良く、その「関連作業」セクションはかなり包括的なように見えるので、私はこの答えを受け入れています。この手法を正確に使用していなくても、これとその参照からユースケースに合わせて何かを調整できると確信しています。
ダンハルム

Maximum mipmapsのデモを見つけましたか?ありがとう。
raRaRa

私はこの論文を読んでいませんが、この「最大ミップマップ」は、コーンステップマッピングコーンのおかげで広い領域をスキップすることで視差オクルージョンマッピングを改善する)に使用される手法に非常に似ています。
ジュリアンゲルトー

@JulienGuertaultこれは単純なHiZトレースだと思います。ヒットしたことを確認するのは安全な方法です。ただし、バイナリ検索などの安全でない方法と比較すると、それほど高速ではありません。
v.oddou

3

私が個人的に見た中で最高のものは、デモシーンのもので使用されているイニゴ・キリーズがするものです。レイマーチはテレインを大きくします。カメラから遠くなるほど大きな距離を歩きます(通常、距離が離れるとディテールの問題は少なくなります(例外=薄い壁!)。彼は、侵入情報やその他の簡単に得られるメトリックを使用して、アンビエントオクルージョンやその他の洗練された照明技術をシミュレートします。

実際に動作しているもののデモは次のとおりです。https//www.youtube.com/watch?v = _YWMGuh15nE

そして、これは非常に興味深い読書である地形レイマーチングに関するIQのページです:http ://www.iquilezles.org/www/articles/terrainmarching/terrainmarching.htm

ところで、現代のゲームでは、「画面空間の反射」のテクニックは、多くの場合、レンダリングされたシーンのZバッファーに対する単なるレイマーチです。Zバッファは実際には単なる高さフィールドです。

これについては、2014年のsiggraphでいくつかの講演を見ましたが、IQと同様の手法を使用している人もいましたが、IQ以外のことをしている人もいました。


1
リンクのアルゴリズムは非常に単純です。90年代に見つけたいくつかの論文よりも洗練されていないように見えます。それは良い出発点のように見えますが、私は「私の最初のレイトレーサー」ではなく、実動システムの最高性能のソリューションを望んでいます。
ダンハルム

このようなものは、最新の最新ゲームのデモシーンコードとスクリーンスペースのリフレクションで使用されます。最速のコードが最も簡単な場合もあります。その単純さのため、私はそれを却下しません。ただし、他の応答が返されるかどうかを確認するのは興味深いでしょう。
アランウルフ

2
応答に欠けているのは、IQが実際の地形のレイマーチングを開始するための初期推測として標準の高さフィールドメッシュを使用していることです。彼はまず、標準のラスタライズを使用して地形の低ポリバージョンをレンダリングし、次に、ラスタライズされた深さから控えめなしきい値を引いてレイマーチングを開始する画像に対してピクセルシェーダーを実行します。これが実際にこのリアルタイムを作成する唯一の方法です。
ベネディクトビターリ

私はあなたが言っていることの一部だけが真実であると信じています。彼は(カメラからの距離とともに)地形の高さに基づいたヒューリスティックを使用して、レイがどれだけ行進できるかを考え出しますが、私が聞いた限りでは、彼はラスタライズを使用していません。ラスタライズを使用しない彼の作品の例を次に示しますが、それはラスタライズを使用する実装が存在しないということではありません: shadertoy.com/view/MdX3Rr
アラン・ウルフ

質問はレイトレーシングに関するものであり、この答えはレイマーチングに関するものであると少し混乱しています。この2つと何を達成できるかには根本的な違いがあります。
ジュリアンゲルトー

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.