次世代のコンソールの発売が近づくにつれ、Insomniac Gamesは、マーベルのスパイダーマンとマーベルのスパイダーマン:マイルズモラレスについての詳細を明らかにするより多くの資料を投稿し始めました。どちらのプロジェクトも光線追跡技術を使用しています。 DigitalFoundryのAlexBattagliaの意見では、彼女は優秀ではないにしても、非常に威厳があるように見えます。スタートとしては悪くない。
しかし、インターネット上のコメントを読んで、彼は技術の実装だけでなく、フレームレートと解像度に関してかなりの量の批判に遭遇しました。そこで、新しいDigital Foundryビデオで、彼は次世代コンソールでのレイトレースに関するある種のチュートリアルを紹介し、Marvelのスパイダーマンでそのように見える理由を説明することにしました。
だから、まず最初に。 PS5のMarvelのSpider-Manでレイトレースが何のためにあるのかを正確に説明しましょう。
4Kの解像度で30FPSを使用すると、レイトレースは見栄えがします。同時に、不眠症のゲームで通常行われているように、動的解像度が使用される場合と使用されない場合があります。これは、車のドアに見られるようなゲーム内の反射にレイトレースが適用される場所です。
または、このスクリーンショットでは、主人公と遠くの都市が建物の窓に映っています。
プレスリリースによると、レイトレースはバックグラウンドシェーディング(Ambient Occlusion、AO)にも使用されます。スクリーンショットやビデオで識別するのはより困難です。通常、AOは、シーンの周囲で反射した光が届きにくい領域で、間接照明からの影をシミュレートします。
ソーシャルメディアやフォーラムへのコメントに関する限り、光線追跡反射の品質には失望があり、一見したところ、基本的な解像度の4分の1しか見ていません。しかし、明らかにフィルターが付いているので、確実に言うのは難しいです。
反射は1080pで表示され、残りの画像は4Kで表示されます。コメンテーターは、たとえば、反射の葉は「本物の」木に見られる葉よりもまれであるか、存在しないことさえあると不満を漏らしています。または、車や歩行者などの一部のゲーム内オブジェクトが反射に表示されない場合があります。または影の欠如。または、スパイダーマンスーツなどの細部を無視します。
実際、これはすべて驚くべきことではなく、当然のことと思われる強制的な措置を指します。これは、レイトレースがいくつかのステップで実行され、それぞれが全体的なパフォーマンスに影響を与え、予算が非常に限られているためです。
与えられた予算内で最も現実的な反射を作成する必要がある開発者であるとしましょう。
光線追跡プロセスを4つのステップに分けてみましょう。 4Kの解像度で30FPSゲームの反射を作成するには、8msを満たす必要があるとしましょう。
最初のステップに移りましょう。光線モデリングの場合、GPUは、画面の内外のシーンと幾何学的オブジェクトを理解している必要があります。最初のステップでは、ゲームシーンの読みやすいバージョンを作成します。含まれるオブジェクトが多く、動的であるほど、この手順にかかる時間は長くなります。
2番目のステップでは、最初のステップで作成した構造に光線を発射します。
ビームがどこかに当たっているかどうかを確認するには、すべてのオブジェクトを非表示のヒットボックスで囲みます。したがって、シーンにヒットする光線は、ヒットをジオメトリに登録するまでシーンを移動します。より多くの光線を発射するほど、より遠くまで移動するか、より多くのヒットボックスをヒットするほど、このステップにかかる時間が長くなります。光線追跡パイプラインのこの部分は、コンソールおよびPCでハードウェアで高速化できます。
次のステップは、ヒットシェーディングまたはピクセルカラーの選択です。
シェーディングされるヒットが多いほど、またはシェーディングが難しいほど、このステップにかかる時間が長くなります。
3番目のステップでは、必要な色と色合いが得られますが、遷移が不十分であるか、ノイズが多い可能性があります。この問題は第4段階で解決されます。原則として、3番目のステップの結果が4番目のステップでより正確にクリアされるほど、プロセスにかかる時間が長くなります。
パイプライン全体を合計8ミリ秒で敷設する必要があり、最初はその目標からはほど遠いです。時間を短縮し、反射が見栄えがよく、ゲームのデザインと一致するように、手順を微調整する必要があります。これにより、一部の領域で反射の品質が低下し、他の領域で反射が増加する可能性があります。
使用する最初の最適化の1つは、レイトレースの解像度を下げることです。これにより、出てくる光線の数が制限され、2番目と3番目のステップに必要な時間が短縮されます。
下のスクリーンショットでわかるように、反射は元の解像度のほぼ4分の1に見えます。レイトレースは非常にリソースを大量に消費するため、この最適化はコンソールGPUだけでなく、一般的にすべてのGPUに対して実行されます。
RTX2060スーパーグラフィックカードで4Kレイトレースが有効になっているGhostRunnerデモのスクリーンショットを見てみましょう。ここでは、スパイダーマンと比較していくつかの違いがあります。ゲームが作成されたUnrealEngine 4は、レイトレース方式を使用します。これは、時間的には少し高価ですが、スパイダーマンよりも物理的に正確です。
RTX 2060SuperはRTX2070と同じように機能し、PS5と同じメモリバス帯域幅と同じ量の8GBを備えています。 RTX 2060 Superは、PlayStation 5 GPUと比較するための優れた出発点になる可能性があります。
シーンが反射とともに4Kでレンダリングされ、画面上の反射の量が上記の静的な水たまりの場合と同じくらい小さい場合、GPUはほとんど適合しません。 30FPS。シーンにダイナミクスが多ければ、フレームレートは間違いなく低くなります。レイトレースの軸方向の解像度を50%削減し、合計解像度を1080pに下げると、パフォーマンスが約27%向上し、GPUに空きリソースを残して、フレームレートを最大30FPSまで向上させます。
より印象的な結果は他のシーンで見ることができます。ここみたいに。反射ガラスの表面が画面のほぼ全体を占めています。この場合、ネイティブ4K解像度での反射により、フレームレートは21FPSになります。同時に、反射の解像度を1080pに下げると、フレームレートが58%増加して33 FPSになり、必要な30FPSになります。
したがって、PS5と同じパフォーマンスのGPUでは、全体の4K解像度で一貫した30 FPSフレームレートを維持できるように、低解像度のレイトレース反射を使用する必要があります。次に、スパイダーマンが光線追跡のコストを削減するために1080pでの反射のみを使用する理由が明らかになります。
計算例に戻りましょう。反射の解像度を下げて、2番目と3番目のステップにかかる時間を短縮しました。しかし、フレームの期間中、指定された予算にまだ適合していません。
光線追跡が実行されるダイナミズムまたはオブジェクトの数を減らすことによって、最初のステップの時間を短縮してみましょう。そのため、前に示したスクリーンショットでは、一部の動的オブジェクトが反射で欠落している可能性があります。または、ここでは、マイルズモラレスのゲームプレイビデオで、群衆のシーンで、一部のNPCがサーフェスに反映されていないことに気付くことがあります。
他の開発者の経験から、画面に多くの文字を描画すると、非常に多くのリソースを消費する可能性があることがわかっています。たとえば、RTX 2080Tiに多くの文字が含まれるMetroExodusの一部のシーンでは、レンダリングに4ミリ秒以上かかります。私たちの場合、これは割り当てられた予算の半分になります。
したがって、レイトレースの最初の段階で動的オブジェクトの数を減らすと、プロセスが加速し、割り当てられた8ミリ秒に収まります。
ただし、結果は私たちが望むほど印象的ではないかもしれません。
たとえば、バトルフィールドVのこれらのスクリーンショットを見てください。
上で見たように、反射した建物が現れたり消えたりします。これは最も望ましい効果ではないため、2番目のステップで光線が移動できる距離と、最初のステップでオブジェクトが構造に含まれる距離を増やします。
スパイダーマンからフレームに戻ると、反射が非常に遠くにあるオブジェクトを示していることがわかります。地平線上のオブジェクトが反射に欠けていたり、絶えず点滅したり、現れたり消えたりすると、おそらく非常に不快になります。
したがって、反射の反射源から遠く離れた場所にある建物を考慮し、光線の移動距離を長くすると、他の何かを犠牲にして成果を上げる必要があります。
計算に戻りましょう。反射の中で遠くの物体を考慮に入れることに決めたとき、私たちは再び自分たちの予算の範囲外にいることに気づきました。したがって、可能な単純化について、パイプラインをもう一度確認します。おそらく、2番目のステップで目的の8ミリ秒に戻ります。
私たちの街のスクリーンショットをもう一度見てみましょう。ウィンドウの反射では、元のツリーモデルでの表示と比較して、葉が少ないか、欠落していることがわかります。ここでは、葉は透明として分類され、透明なオブジェクトの場合、パイプラインの2番目のステップに時間がかかります。これは、粒子と反射によって特定のシーンが非常に高価になるバトルフィールドVの経験からわかります。
スパイダーマンの場合、2番目のステップの前に、反射で木の葉の数を減らすことができます。また、ここのように、反射の霧が表示されないレイトレースで粒子効果が処理されないようにします。
現在、ほぼフレーム予算内にありますが、それでもわずかに超過しています。
最後の最適化は、シェーディングを使用する3番目のステップで実行できます。
スクリーンショットに戻りましょう。スパイダーマンのスーツの反射に細部が欠けていることに気づきましたか?彼の本当のスーツに見えるのはどれですか?反射で素材を単純化すると、描画にかかる時間が短縮されます。
Wolfenstein:Youngbloodなど、レイトレースを使用する多くのゲームが同じ手法を使用しているため、これに問題はありません。
その結果、割り当てられた8ミリ秒に収まります。そのため、たとえば、遠くのオブジェクトの反射を追加するなど、いくつかの側面で反射の品質を向上させましたが、同時に、反射のダウンサンプリングなどの特定の簡略化に頼りました。
この例が、限られたパフォーマンス予算やレイトレースなどのコストのかかるテクノロジーを扱うときにゲーム開発者が直面するジレンマを理解するのに役立つことを願っています。