技術者インタビュー: Metro Exodus、レイ トレーシング、4A エンジンのオープンワールド アップグレード

技術者インタビュー: Metro Exodus、レイ トレーシング、4A エンジンのオープンワールド アップグレード

ゲームにおける主要な技術革新が PC で登場した時代を覚えていますか?マルチプラットフォーム開発の台頭と、現世代のコンソールへの PC テクノロジの登場により、大きな変化が見られました。現在、PlayStation と Xbox のテクノロジーはこれまで以上にビジュアル エクスペリエンスのベースラインを定義しており、PC でのアップグレードのベクトルはある程度制限されており、多くの場合、解像度とフレーム レートのアップグレードに帰着します。しかし、リアルタイム レイ トレーシング PC テクノロジの登場は状況を大きく変えるものであり、4A Games の Metro Exodus は、私たちが長い間見てきた中で最もエキサイティングで先進的なゲームの 1 つを提供します。これはコンソールでも優れたタイトルですが、最新の PC ハードウェアでも真にゲームを変えるようなビジュアル体験を提供します。
このゲームは多くのレベルで魅力的です。まず第一に、このコンソール世代の最終段階に近づいていますが、これは実際、グラフィックス テクノロジーの真のパイオニアである 4A Games が現行世代のハードウェア向けにゼロから構築した最初のタイトルです。また、4A はゲームを通じて従来のリニア スタイルのルートから、よりオープン ワールド スタイルのゲームプレイに移行していますが、物語の要素はより明確になり、ミッションはより Crysis のような方法でアプローチできるようになります。これは、Ubisoft スタイルのアイコンがいっぱいのサンドボックスとは対照的に、一種の「幅広い」レベル デザインとして考えてください。いずれにせよ、この移行には、以前の Metro タイトルに見られた非常に詳細なディテールを維持しながら、Metro の世界のレンダリングと照明の方法について大幅な再考が必要です。そして、これらすべてが最新かつ最高の PC や強化されたコンソールだけでなく、Xbox や PlayStation の基本ハードウェアでも動作する必要があることを忘れないでください。
さらに、ゲーム内には、より先進的な次世代機能が含まれています。リアルタイム レイ トレーシングは、Nvidia RTX グラフィックス カードを搭載した PC で可能になりました。Gamescom で見たものは非常に印象的でしたが、私たちが見ていたのは 4A Games の最も初期のレイ トレーシングの実装で、1080p のフレーム レートはそれを下回っていました。最上位の RTX 2080 Ti では 60 フレーム/秒。そして、これは明白な疑問を引き起こします – 劣ったカードはどうやって対処するのでしょうか?その答えは、4A が RT の実装を見直し、その見事なレイ トレース グローバル イルミネーション ソリューションと同等の結果を提供するテクノロジーを刷新しましたが、その方法は、すべての RTX ファミリの GPU で良好な結果を提供できるようにすることにあります。
つまり、Metro Exodus のレビュー コードが到着するのを待っている間、Digital Foundry は 4A が最新プロジェクトで取った方向性や、最後に見たときからそのエンジンがどのように強化およびアップグレードされたかについて多くの質問をしていました。 Metro Redux タイトル、そしてもちろん、これまでに見た中で最も美しいリアルタイム レイ トレーシング実装の 1 つをどのように実現し、最適化したかについても説明します。私たちの質問に詳しく答えてくれたのは、4A レンダリング プログラマーの Ben Archard と開発者の CTO、Oles Shishkovstov です。
YouTube 動画のカバー画像
Metro Redux リリースと Metro Exodus の間で、4A エンジンの機能に関して大きな変更点は何ですか? Metro Exodus を見るだけで、この世代で見られる多くの最新機能が非常に洗練された形で存在しているように見えます。物理ベースのマテリアル、グローバル ボリューム、コンソール上のオブジェクト モーション ブラー、広範なエフェクトなど、4A エンジンが以前に開拓したエフェクトが含まれています。視差マッピング/テッセレーションの使用、大量の GPU パーティクルなど。
Ben Archard: 大量の新機能と、それらへのアプローチ方法における概念的な変化です。現在、確率的アルゴリズムとノイズ除去がレンダリングの大きな焦点となっています。確率的アルゴリズムから始めます。確率的アルゴリズムはさまざまな機能で使用され、いくつかのテクニックを総称するようなものだからです。
モデル化して分析しようとしている大規模で複雑なシステムがあり、そのシステムには膨大な数の個別要素 (合理的に追跡するには情報が多すぎます) が含まれているとします。文字通りすべてのデータ点を数え上げて力ずくで統計的な結論を導き出すことも、全体を代表するいくつかの情報をランダムに選択することもできます。街頭で人々を無作為に調査することや、数千人の患者を対象に無作為に医学的検査を行うことを考えてみましょう。使用する値のセットははるかに小さく、そのような状況にある全員を検査する場合に得られる正確なデータは得られませんが、結果を分析すると非常に近い近似値が得られます。これらの例で重要なのは、それぞれが広範囲の人々を真に代表するように、適切に分散されたサンプルを確実に選択することです。基本的には同じ結果が得られますが、データ収集に費やす労力は大幅に軽減されます。それがモンテカルロ法です。
それに関連して、確率分析のもう 1 つの主要な部分はランダム化です。もちろん、私たちは本当にランダムに何かを行うわけではありませんし、またそうしたいとも思いません。より適切な表現は、サンプル ノイズまたはジッターの生成です。ノイズが重要な理由は、サンプリング対象が何であれ、ノイズによって規則的なパターンが崩れてしまうためであり、人間の目は画像内でそれを見つけるのが得意です。最悪の場合、サンプリングしている周波数と同様の周波数 (モンテカルロのため低い周波数) で変化するものをサンプリングしている場合、望ましくない均一な結果が選択されることになり、その間の詳細が見逃される可能性があります。 。たとえば、表面上の明るい光の点だけを選択したり、金網フェンスの実際の金属部分だけを選択したりすることができます。したがって、ノイズによってエイリアシングアーチファクトが破壊されます。
問題は、サンプル数を 1 ピクセルあたり 1 以下にまで下げようとすると、実際にノイズが発生してしまうことです。そのため、ノイズ除去 TAA が用意されています。個々のフレームは非常にノイズが多いように見えますが、数フレームにわたって情報を蓄積し、ノイズを除去していくことで、必要な範囲を構築できます。カットシーンの直後のフレームをキャプチャするとき、扱うべきノイズの多いデータが 1 フレームしかない場合、最近の RE2 デモ分析ビデオを参照します。また、隅から移動すると突然多くの新しいシーン情報が明らかになり、最初から構築を開始する必要があるという多くのゲームでも見られます。ここで私が言いたいのは、私たち (そして他の人たち) が一般的にこの方法で物事を進めることを選択した理由と、そのトレードオフは何なのかということです。最終的にノイズの多い画像が生成され、フィルタ処理に多くの作業を行う必要がありますが、その利点は、画像のエイリアシングが少なく、より複雑なアルゴリズムをより少ない頻度で計算できることです。
これが、現代の機能の多くについての物語のようなものです。これらの計算は非常に複雑で、入力データが大量にあるため、実際に計算して後でフィルタリングする回数を最小限に抑えるようにしています。もちろん、コンピュータ グラフィックスには、実際の計算をできるだけ少なくして、非常に厳密に推定したい大量のデータがある状況の例が豊富にあります。レイ トレーシングは、私たちがキャストする実際の光線の数よりもはるかに多くの光のフォトンが存在するため、明らかな例です。
私たちがこれを使用する他の場所は、ジオメトリを費やしたいよりも細い束が多く、個々のピクセルには小さすぎる髪の毛です。これは、複数のフレームにわたって半影を生成するシャドウ フィルター処理など、多くの画像サンプリング手法で使用されます。また、スクリーン空間の反射でも、これは事実上 2D レイ トレーシングの一種です。ボリューム ライティングでは深度ジッターを使用します。大気シミュレーションでは、通常の深度値を統合してボリューム テクスチャを生成します。テクスチャの奥深くに進むと、各ボクセルが以前のボクセルの上に蓄積されるため、特定の距離で有効なフォグ密度が得られます。ただし、もちろん、長距離をカバーするために深さ 64 ボクセルのボリューム テクスチャだけを使用すると、忠実度がかなり低いため、深度プレーンのような外観になってしまう可能性があります。深度ジッターを追加すると、これを解消できます。
YouTube 動画のカバー画像
通常の従来のスクリーンスペース アンビエント オクルージョンは、周囲の深度バッファから大量のサンプルを収集して、特定のピクセルからどれだけの光がブロックされるかを推定することで機能するもう 1 つの手法です。良好なデータを取得するためにサンプリングする必要があるピクセルの数は、ピクセルに影響を与える距離の 2 乗に応じて増加します。したがって、ここでサンプルの数を減らすことが非常に重要であり、やはりノイズの多い AO をフレームごとにフィルタリングできます。ちなみに、これが、AO が将来的にレイ トレーシングの道を歩まなければならない理由の 1 つです (唯一の理由ではありません)。 RT では、オブジェクトがオクルージョンに直接影響を与える可能性がある範囲が非常に広くなり、最終的にはその半径内で十分なピクセルを正確にサンプリングすることが不可能になります。それは、深度バッファーのラスター化中または画面外で失われる情報の量について説明する前の話です。
はい、レンダラーの主な焦点は、非常に複雑な計算を実行するときの選択をより選択し、最終イメージのフィルタリング、ノイズ除去、およびエイリアス除去に大量のフレーム時間を費やすようになりました。そして、これには、これらの計算 (頻度は低いですが) をより高度に行うことができるという利点が伴います。
これは、ロバート クックによる古い (1986 年の) 論文へのリンクです。かなり平易な英語で書かれており、とても読みやすいです。この考え方の多くがどこから来たのかを示しています。これは 30 年前のオフライン レンダリングに関する最先端の研究でした。これを読むと、その内容が私たちが現在リアルタイムで取り組んでいることとどれだけ一致しているかに驚かれるでしょう。その多くは今でも非常に重要であり、著者が当時述べたように、ノイズ除去の分野は活発な研究分野でした。それは今でも存在しており、RTX に関する作業のほとんどが行われてきました。クック氏は 16rpp (ピクセルあたりの光線数) を想定して取り組んでいましたが、まだそれを実現することはできませんが、この技術が独自のムーアの法則を取得すればそうなることを願っています。とはいえ、サポートする4Kテレビがあったとは思えません。それでも、ノイズ除去の改善により、これを 1rpp 未満で実行できるようになりました。
もう 1 つの大きな改善は、照明モデルが大幅にアップグレードされたことです。各光源からの光の実際の計算と、それらのサンプルを保存して画像に統合する方法の両方においてです。すべての光源に対して完全なカスタム GGX ソリューションにアップグレードしました。その多くは確率論的にフィルタリングされたシャドウ マップによって減衰され、以前のゲームよりも多くのより美しいシャドウが得られます。また、画面に整列したボクセル グリッド (寸法 24x16x24) にライトを格納するライト クラスタリング システムも使用します。各グリッドには、そのグリッド内のあらゆるものに影響を与えるライトへの参照を保存します。次に、コンピューティング シェーダーでイメージを処理するときに、各出力ピクセルのビュー空間位置を取得し、それがどのクラスターに属しているかを把握し、画面のその領域に影響を与えるライトのみを適用できます。
現在、不透明なオブジェクトに対しては常に遅延パイプラインがあり、その上に G バッファーが作成され、その上にライトが後で蓄積されます。ただし、すべての照明データにアクセスできないブレンド効果の前方セクションもありました。このようにすべてのライトを保存すると、フォワード レンダラーがすべてのライトを完全にサポートできるようになり、パーティクル、髪、水などを完全に遅延してレンダリングされたかのように照らすことができます。これらのクラスターには、影のある/ない、スポット、全方向性、および新しいライト プローブを含む、あらゆる種類のライトに関するすべての情報も詰め込まれています。クラスター バッファーに格納されているライト フラグに基づいて、シェーダーで動的分岐を行うだけです。
前方オブジェクト用の高精度 (FP16) レンダリング オプションも追加されました。また、フォワード レンダリング エフェクトを使用するもう 1 つのオプションは、アルファ ブレンドされたオブジェクトのモーション ブラーをより正確にするために、スクリーン空間の速度バッファーを変更します。また、フォワードパスは半分の解像度で実行されますが、4x MSAA (サポートされている場合) で実行されます。これにより、同じ数のサンプルが得られるため、アップスケール時に失われる情報は少なくなりますが、ラスタライズと補間は各ピクセルの 4 つのサンプル間で共有されます。
コンソールでの Metro の最後のリリースは、非常に安定した 60fps を目標としており、見事に維持されました。 Metro Exodus は今回、コンソールで 30fps を目標としています。 GPU にローカライズされたレンダリング機能以外に、その 30fps ターゲットからの追加の CPU サイクルがコンソールでどこに費やされるのでしょうか?
Ben Archard: オープンワールド マップは、他のゲームの閉鎖されたトンネル マップとはまったく異なります。環境はより大きく、その中にははるかに多くのオブジェクトがあり、はるかに遠くまで見えます。したがって、更新とレンダリングの両方からオブジェクトを選別することは非常に困難です。はるかに離れたオブジェクトも更新してアニメーション化する必要があります。トンネル内では、隣の部屋にあるオブジェクトをほとんど除外して、AI のみをアクティブにし、それが表示されたときにアニメーションとエフェクトの更新を開始できますが、オープンワールドではそれがはるかに難しくなります。
遠くにあるライトはシャドウパスを実行する必要があります。動的気象システムを使用した高品質のシーンは、より豊富なパーティクル エフェクトを意味します。手続き上の葉は、動き回ったときにその場で生成する必要があります。地形を動的に LOD する必要があります。遠くの物体が崩壊して偽者になる可能性がある場合でも、心配すべき遠くの物体はさらにたくさんあります。
したがって、その余分な時間の大部分は、より多くの AI、より多くのパーティクル、およびより多くの物理オブジェクトの更新に費やされますが、レンダリングする追加の要素を GPU に供給するためにもかなりの時間が費やされます。可能な場合は並列化します。このエンジンは、マルチスレッド タスク システムを中心に構築されています。 AI や車両などのエンティティは、独自のタスクで更新されます。たとえば、各シャドウ ライトは、別のタスクでレンダリングする必要があるオブジェクトに対して、独自の錐台でクリップされたギャザーを実行します。この収集はメイン カメラの収集プロセスに非常によく似ており、ライトごとにシーン全体で何度も繰り返されるだけです。これらすべては、それぞれの遅延マップ パスとシャドウ マップ パスが開始される前 (フレームの開始時) に完了する必要があります。
したがって、オープンワールドに存在するものを適切に更新するには、目に見えない隅に隠れることはできないため、多くの追加作業が費やされると思います。そして、目に見えるものがさらに多くなったという事実には多くのことが関係しています。
PC 版 DXR GI のリリースに伴い、リアルタイム グローバル イルミネーションに関する数年前の議論を思い出す必要があります (当時、ゲーム シーンのラフなボクシライゼーションが GI のリアルタイム ソリューションの可能性として言及されていました)。 Metro Exodus は現在コンソールでどのタイプの GI を使用していますか? DXR GI は、次世代コンソールの 4A エンジンの方向性に影響を与えますか?
Ben Archard: カメラの周囲に球面調和関数グリッドを使用しており、フレームごとに最新の RSM データからスムーズに更新されます。それに加えて、たくさんの光プローブ。これは比較的安価なソリューションであり、多くの場合非常に優れていますが、照明が漏れる可能性があり、粗すぎるため、遠くからでも間接影のように見えるものを取得できません。次世代コンソールが光線のトレースに優れていれば、私たちは完全に「参加」するでしょう。
はい。コンソールと PC は、現時点ではその GI 方式を標準として使用しています。この方法は、輝きのヒント (G. Papaionnou) の影響を大きく受けています。一般的なプロセスでは、カメラの周囲に 32x16x32 のボクセル グリッド (または RGB の 3 つ) を取得し、各ボクセルに対して色と方向の特性をエンコードする球面調和関数を保存します。ライト プローブのコレクションと、太陽の 2 番目のシャドウ カスケードに沿って生成される反射シャドウ マップ (RSM) からのデータをグリッドに入力します。効果的には、通常のシャドウ マップと同様に太陽の視点からシーンをレンダリングしますが、今回はアルベド (反射光) と法線 (反射の方向を計算するため) も保持します。これは、G バッファーの生成時に行うこととほぼ同じです。
GI の構築時に、ボクセルごとにこれらの RSM から多数のサンプルを取得して、どの光がそのボクセルにどの方向から到達するかを把握することができます。これらのサンプルを平均して、ボクセルを通過するときに支配的な方向を持つ一種の平均的な光の色を求めます。ボクセル内でサンプリングすると、(大まかに言えば) 一種の小さな指向性光源が得られます。時間の経過とともにデータをスムーズに蓄積するために、4 フレーム分の履歴データ (前のフレームのボクセル グリッド) を維持します。そして、はい、後で光の蓄積に使用するときにボクセル グリッドをサンプリングする方法にも多少のジッターが発生します。
これは比較的安価で効果的なソリューションですが、最初に注意すべきことは、画面全体の 32×16 テクスチャはそれほど多くの情報ではないため、このテクニックの忠実度は非常に低いということです。そのサイズ (実際にはさらに小さい) のシャドウ マップに保存できる情報量を想像してみると、間接的なシャドウのように見えるものを近似するには粗すぎることが明らかです。また、光漏れの問題が発生する可能性もあります。もちろん、それはすでに時代遅れの一時しのぎになっています。なぜなら、私たちは今すぐ RT でこれをやりたいと思っており、次世代コンソールが RT をサポートできるなら、完全に「参加」することになるからです。
次世代コンソール ハードウェアのレイ トレーシングについて話しましょう。それはどの程度実現可能だと思いますか?また、PC で使用されている RTX カードと異なる場合、代替となるものは何ですか? PC が DXR パスを維持しながら、コンソールがボクセル GI ソリューションのようなものを使用する未来が見えるでしょうか?
Ben Archard: それはあまり重要ではありません。専用のハードウェアであろうと、シェーダー ユニットでそれを実行するのに十分な計算能力があれば、それは実行可能であると思います。現世代にとっては、はい、複数のソリューションが適しています。
これは、レガシー PC ハードウェアの並列パイプラインをどのくらいの期間サポートするかという問題でもあります。昨年購入した人にとって、GeForce GTX 1080 は古いカードではありません。したがって、これらのカードが段階的に廃止され、RT が完全に主流になり、それを想定できるようになるまでには数年かかります。そして明らかに、現行世代のコンソールでは、エンジン内に新しい RT ソリューションとともにボクセル GI ソリューションを含める必要があります。 RT はゲームの未来であるため、どちらにしても現在は RT に主な焦点が当てられています。
次世代コンソールでの RT の実現可能性という点では、ハードウェアが特に RTX コアである必要はありません。レイ トレーシングに関して重要なのは、これらのコアだけではありません。これらは、特に BVH 交差テストに関連する計算を高速化する固定機能ハードウェアです。コンピューター コアの数が多く、十分に高速であれば、これらの計算は標準コンピューティングで実行できます (次世代コンソールに搭載されると考えられます)。実際、DXR は DX12 の拡張にすぎないため、DX12 を実行している GPU はすべて DXR を「実行」できます。
レイ トレーシングの実行速度に大きく影響するその他の要素は、コア API によって処理される非常に高速な BVH 生成アルゴリズムです。そして本当に速い記憶力。 SSAO などとは対照的に、レイ トレーシングが行う厄介な点は、メモリにランダムにアクセスすることです。 SSAO は、テクスチャ空間のローカル領域からテクセル データのロードを取得します。これらのテクスチャの保存方法により、それらのテクセルがメモリ内で非常に近く (または隣接) になる可能性がかなり高くなります。また、次のピクセル オーバーの SSAO は、ほぼ同じサンプル セットで機能します。したがって、非常に多くのデータをキャッシュできるため、メモリからロードする必要がはるかに少なくなります。
キャッシュ内のデータを処理すると、処理が驚くほど高速になります。残念ながら、光線は実際にはこれと同じレベルのコヒーレンスを持っていません。これらは、ジオメトリのセットのほぼすべての部分にランダムにアクセスでき、次のピクセルのレイは、同様にランダムな位置からデータを取得する可能性があります。したがって、光線交差の計算を高速化する専用のハードウェアが重要であるのと同じくらい、境界ボリューム データを迅速に取得できる高速コンピューティング コアとメモリも、リアルタイム RT を実行するための実行可能な手段です。
前回話したとき、Xbox One と PC 向けの初期の DirectX 12 について、さらには現在 Vulkan に引き継がれている Mantle についても話しました。 Metro Exodus の PC バージョンが DX12 をサポートするようになりました。最近、低レベル API は 4A エンジンにどのように組み込まれているのでしょうか?これらのメリットは、特に PC 上で 4A エンジンにどのような影響を及ぼしますか?
Ben Archard: 実際、DX12.X API のおかげで、Xbox ファミリ コンソールの GPU と CPU の両方でパフォーマンスが大幅に向上しました。周知の事実だと思いますが、Xbox の GPU マイクロコードは、SetPSO がコマンド バッファー内のいくつかの DWORD にすぎないように、API をそのまま直接消費します。 PC に関しては、ご存知のとおり、アクセスできる新しい機能はすべて DX12 に組み込まれ、DX11 は忘れ去られています。私たちは頻繁に最前線に立たされているので、選択の余地はありません。
前回のインタビュー以来、Microsoft と Sony の両社は、他のパフォーマンス調整とともに、より優れた GPU とオリジナル CPU のアップクロックを搭載した熱心なコンソール (Xbox One X と PS4Pro) をリリースしました。 Metro Exodus のそれぞれのベース コンソールとの解像度とグラフィック設定の違いは何ですか? また、4A エンジンは、これらの新しい GPU からの更新された機能セット (PS4 Pro などの高速に詰め込まれた演算) の一部を活用していますか?
Ben Archard: 私たちは、手元にある GPU 用の API にあるものはすべて利用しています。 FP16 の演算については、1 つの計算シェーダーでのみ使用され、主に VGPR の節約のために使用されていると思います。他のタイトルと同様に、Xbox One X および PS4 Pro アップスケールでもネイティブ 4K を利用できます。
YouTube 動画のカバー画像
最終ゲームのレイ トレーシングにはさまざまな品質設定がありますが、DXR 設定は実際に何をするのでしょうか?
Oles Shishkovstov: レイ トレーシングには、高とウルトラの 2 つの品質設定があります。 Ultra 設定では、ピクセルごとに最大 1 つのレイをトレースし、すべてのノイズ除去と蓄積をフルに実行します。高い設定では、基本的にチェッカーボード パターンでピクセルあたり最大 0.5 レイをトレースし、ノイズ除去パスの 1 つがチェッカーボードとして実行されます。画質とパフォーマンスのバランスを最適にするために「高」を推奨しますが、まだ多くの実験を行っているため、この情報は執筆時点でのみ有効であることに注意してください。
Gamescom では、グローバル イルミネーションのレイ トレーシングがピクセルあたり 3 つのレイで実行されると述べられていましたが、その後、いくつかの大きな変更があったのでしょうか?
Oles Shishkovstov: Gamescom で私たちが示したのは、リアルタイム レイ トレーシングの初期段階でした。私たちはまったく新しい技術革新の学習過程にありました。レイ トレースされた GI は、たまたま難しい問題です。それが、それが通常「聖杯」と呼ばれる理由です。
これが難しい問題である理由は、グローバル イルミネーション アルゴリズムの重要な部分が、可視半球全体の値をコサイン積分する必要があるためです。私たちは、点に当たる可能性のあるすべての方向 (つまり、その点を囲む半球内の任意の方向) から、点に当たるすべての光の値を生成しようとしています。このように考えてください。概念的に、私たちが基本的に行っていることは、各ピクセルでキューブマップをレンダリングし、それをコサイン積分するようなものです (キューブマップ内のすべてのピクセルのすべての値を、方向と重みを付けて合計します)入射角)。その想像上の「キューブマップ」の中に何があったのかは、レンダリングが完了した後でのみわかります。それは理想的で強引な方法です。実際、リフレクション マップは、キューブマップをオフラインで事前に生成し、数百万のピクセル間で共有し、LOD の生成時に統合部分が完了する点を除いて、同様の方法で機能します。達成するように設計されたものと同様の効果を、より正確なピクセルごとのレベルで実現したいと考えています。
残念ながら、低解像度の立方体マップであっても、合計するサンプルが数千個必要になりますが、処理できるのはピクセルごとに 1 つのレイ (1 つのサンプル) です。類推を続けるために、大部分が黒いピクセル (情報がなかった) と 1 つの明るいピクセルからなるキューブマップの値を加算することを想像してください。その時点でその方法は破綻するので、他の解決策を考え出す必要があります。 GI の利点は、(反射の場合と同様に) 高周波データよりも低周波データに関心があることです。ここで確率論的アプローチが私たちを救ってくれます。レイ値を保存し、その 1 つのサンプルを多くのサンプルの代表として扱います。私たちは、後でそれがどの程度代表的であると考えるかに基づいて、その重要性を重み付けします。次に、この生の光線データに対してノイズ除去パス (実際には 2 回) を実行します。ここでは、重要度データ、履歴データ、および周囲のピクセル データを使用して空白を埋めます。これは、光の蓄積に備えて光線データを準備するためだけです。また、TAA を使用してフレームの最後に最終 (3 回目) のノイズ除去を実行して、最終画像をクリーンアップします。
つまり、Gamescom では 3 つの光線がありました。 Gamescom の後、私たちは高品質のノイズ除去と複数のフレームにわたるレイ データの時間的蓄積に重点を置いてすべてを再構築しました。確率的手法は本質的にノイズが多いため、パイプラインの最後に特別に作成された「ノイズ除去」TAA を用意しています。
レイ トレーシングの際立った最適化が実装されています – Battlefield 5 のレイ トレーシング反射では、レイマーチングとレイ トレーシングの組み合わせや、オブジェクトの反射率が最も高い場所の光線を制限し最大化する可変レイ トレーシング システムなど、さまざまなトリックが使用されています。発射される光線の上限。 Metro Exodus のレイ トレース GI にも同様の最適化が行われていますか?それとも、スクリーン空間の情報を活用したり、メトリックに基づいて射出される光線を制限したりすることは、グローバル イルミネーションのように全体的で遍在するものほど実現可能ではないのでしょうか?
Oles Shishkovstov: リアルタイム レイ トレーシングは、エキサイティングな新境地です。私たちはゲームにおけるレイ トレーシング GI の先駆者であるため、明らかに学びながら、このテクノロジーを実装するためのより良い方法を見つけています。あなたが言うように、それは反射ではなくGIであり、私たちの場合、「粗い」ピクセルは「滑らかな」ピクセルと同じくらい(それ以上ではないにしても)重要です。したがって、レイの数を実際に制限したり、その数を「適応」したりすることはできません。ピクセルごとに処理する必要があるのは常に最低限のものであるためです。 1 つのサンプルで重要度の値を割り当て、どれだけの光が存在するか推定を開始できます。ただし、何も試食しなければチャンスはありません。ただし、デノイザー レベルでは適応できる可能性があります (そして実際に適応しています)。
スクリーンスペースに関しては、確かに、BLAS/TLAS (BVH) 更新と非同期で安価な「プレトレース」を実行し、現在の深度バッファから交差が見つかった場合は、実際のレイを生成せずにそれを使用します。また、レイ生成シェーダー内でテレイン (本質的にはハイトマップ) をレイマーチしますが、GPU でのレイテンシー隠蔽の仕組みの性質により、この方法はほぼ無料で行われます。
私たちにとってもう 1 つの問題があります。問題の定義により、私たちの光線はコヒーレントではありません。それはパフォーマンスに役立ちません。事前に計算された非常に小さなブルーノイズ テクスチャを画面全体にタイル表示する (フレームごとに変更される) ことで、この問題をある程度軽減します。これは、コサイン加重分布ランダム シードとして使用されます。当然のことですが、大きなウィンドウ全体ではある程度一貫性があります。これにより、レイ トレーシング自体が約 10% 高速化されます。大したことではありませんが、それでも何かがあります。
Northlight でのレイ トレーシングに関する Remedy の 4C プレゼンテーションを読んで、RT 反射に 1:1 の比率で画面解像度の最大 40% のレイを送信する Battlefield 5 のコンテキストを考慮すると、レイのコストが高くなることが考えられます。 GPU 上のトレースは、主に RT コアで処理されるレイと三角形の交差部分ではなく、関連するシェーディングで行われます。このパフォーマンス バランス (レイ生成 + 交差、シェード、ノイズ除去など) は Metro Exodus ではどのようになりますか?また、RT のどの部分が GPU のパフォーマンスで最も重いですか?
Oles Shishkovstov: 私たちのレイ トレーシング シェーダー (地形のレイマーチングは別として) は、最も近いヒットを検索して UAV に保存するだけであり、内部にシェーディングはありません。このようにして、実際に光線の「ディファード シェーディング」、より具体的にはヒット位置を実行します。これは、現在のハードウェアにとって、シェーディング/RT 作業の適切なバランスになっています。 「ディファードシェーディング」は安いので特筆する価値はありません。実際にコストがかかるのはノイズ除去です。ピクセルごとに送信するレイが少ないほど、基本的に二次関数的にスケールされるため、ノイズ除去のコストが高くなります。リアルタイムにするために、多くの作業、アイデア、トリックが実装されました。これは、Nvidia の協力を得て、複数の人々、さらには複数の企業による取り組みでした。
その核心は、反復蓄積を備えた 2 パスの確率的ノイズ除去器です。分散、可視性、ヒット距離などに高度に適応します。繰り返しますが、すべての場合においてそれ自体で「きれいな」画像を生成するわけではありませんが、出力ノイズ レベルはパイプの端で「食われる」のに十分です。ノイズ除去TAA。パフォーマンス分割に関しては、ほとんどのシーンでレイ トレーシング自体とノイズ除去のパフォーマンス コストはほぼ同じです。他の人があまり話さないことですが、パフォーマンスに重要な点がもう 1 つあります。頂点アニメーション化に必要な BVH (BLAS) 更新に加え、インスタンス ツリーをコンパクトかつタイトに保つために必要な BVH (TLAS) 再構築です。私たちは可能な限りそれを抑制します。これらすべてがなければ、コストは 0.5 RPP トレースと同等、あるいはそれ以上になります。
RT を最適化する際の課題は何でしたか、また今後調査したい最適化戦略は何ですか?
Oles Shishkovstov: レイ トレーシングに関係するものではなく、一般的な PC の問題に似ています。プロファイリング ツールが最大の問題です。何かを最適化するには、まずボトルネックを見つける必要があります。ありがたいことに (そしてハードウェア ベンダーの) ツールは徐々に改善されています。一般に、リアルタイム レイ トレーシングは新しいものであり、業界全体でさらに多くの研究が必要です。私たちは GDC 2019 で私たちの知識や発見を共有します。他の人も自分の知識や発見を共有すると信じています。グラフィックス研究コミュニティは共有することが大好きです。
一般的なフォローアップの質問: RT の実装で誇りに思う部分、または興奮する部分はありますか?ぜひお聞きしたいと思います。
Oles Shishkovstov: ゲームではレイ トレーシング ライトが非常に素晴らしかったです。プレイヤーにとっては非常に没入感が高いです。また、放射照度を保存、蓄積、フィルタリングする方法、それを行う空間には指向性があります。これにより、法線マップの詳細に対する鋭い応答が得られるだけでなく、接触の詳細や間接的なシャドウも改善されます。何よりも、間接鏡面反射光のかなり優れた近似を再構築できるようになります。
4A ゲームの皆様、お時間をいただきありがとうございました。

「技術者インタビュー: Metro Exodus、レイ トレーシング、4A エンジンのオープンワールド アップグレード」に関するベスト動画選定!

The Making Of Metro Exodus – Episode Two
The Making Of Metro Exodus – Episode One

関連記事一覧