オープンな環境と多くの静的コンテンツ(例:クライシス)を備えた最新のAAAゲームでは、オクルージョンカリングはどのように実行されますか?


19

私が念頭に置いている2つのアイデア:

1)シーンは、低解像度および低ポリゴンカウントモデルを使用して(またはキューブや球体などの境界ボリュームのみを使用して)、不可視のバッファーにレンダリングされます。次に、バッファがチェックされ、何が表示されているかがわかります。低解像度のシーンをレンダリングする前に、錐台カリングを適用して、できるだけ多くのオブジェクトを既に削除することができます。

2)ツールが静的マップ上で実行され、複雑な(したがって低速の)レイトレーシングを実行して、マップ上のいくつかの3D位置について、何が見えて何が見えないかを認識します。その情報はすべて、後で実行時にユーザーが使用できる効率的な方法で保存されます(例:octree)このソリューションは、オブジェクトを移動せずに静的メッシュ(例:構築)でのみ機能します。


3
「ゲーム<X>がこれをどのようにしたか」という質問は、FAQにあるように明確にトピック外です。この質問を編集して、他の人がどのようにオクルージョンカリングを実行できるかではなく、どのようにオクルージョンカリングを実行できるかを尋ねるかもしれません。(また、質問のボディに、独自の答えを提供することではなく、あなたが議論またはリストのために求めているようにそれは感じさせる答え
トレバー・パウエル

回答:


13

Jovanの答えは素晴らしいですが、「このジオメトリは実際にピクセルをレンダリングしましたか?」という質問をするためのハードウェアサポートがあることを付け加えたいだけです。(あなたのアイデア#1)これらはオクルージョンクエリと呼ばれます-これらはここでそれらについての良いGPU Gems記事です

これは、目に見えないバッファーを必要とせず、バッファーをチェックするよりも効率的または単純である点を除いて、アイデア#1と非常に似ています。リンクされた記事は、ハードウェアオクルージョンクエリがどのように機能するかを詳細に説明した素晴らしい仕事をしています。

Unreal Engine 、サポートするプラットフォームでハードウェアオクルージョンクエリを活用し、視錐台カリングやオクルージョンされる静的ジオメトリの事前計算などの他の手法に加えて、


ハードウェアオクルージョンクエリは、実際には「時々」よりも少し一般的です-一部のモバイルGPUの例外を除いて、それらは遍在していると見なすことができます。
マキシマスミニマス

彼らは非常に遅いのではないですか?
Quonux

12

1)シーンは、低解像度および低ポリゴンカウントモデルを使用して(またはキューブや球体などの境界ボリュームのみを使用して)、不可視のバッファーにレンダリングされます。次に、バッファがチェックされ、何が表示されているかがわかります。低解像度のシーンをレンダリングする前に、錐台カリングを適用して、できるだけ多くのオブジェクトを既に削除することができます。

この手法はKillzoneによって使用され、PS3のPractical Occlusion Cullingのプレゼンテーションで詳しく説明されています。また、屋内エリアにポータルを使用します

大きな屋外マップについて留意すべきことの1つは、メッシュの単純化がオクルージョンカリングと同じくらい重要であるため、ジオメトリクリップマッピングによる高さフィールドのバリエーションがよく使用されることです。カリングについても説明している優れたペーパーを次に示します。GPU Gems 2にはそれが実装されています。


5

少なくとも最初の2つのQuakeゲームは戦略2を使用しました。idTechエンジンがまだそれを使用しているかどうかはわかりません。到達可能な世界は、ツリーデータ構造(「バイナリスペースパーティション」)で整理された凸空間に分割され、ツリー内の各ノードには、そのノードから見える他のノードを表すビットベクトルがあります(「潜在的に見えるセット」)。


1
Quakeを持ち込む場合は、Thiefのレンダリング技術を持ち込むこともできます;)- nothings.org/gamedev/thief_rendering.html-
ジョヴァン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.