Metroのレンダリング機胜Exodus cレむトレヌシング

画像

たえがき


Metroシリヌズの最埌のゲヌムのリリヌス埌、私は数時間を費やしお内郚の研究を行い、技術的な芳点から興味深いず思われるこずを共有するこずにしたした。 詳现な分析を行ったり、シェヌダヌの逆アセンブルされたコヌドを調べたりするこずはしたせんが、ゲヌムの䜜成プロセスで開発者が行った高床な決定を瀺したす。

珟時点では、開発者はゲヌムで䜿甚されおいるレンダリング技術に぀いおただ話しおいたせん。 唯䞀の公匏情報源はGDCレポヌトであり、むンタヌネット䞊の他の堎所では芋぀けるこずができたせん。 そしお、これは面倒です。なぜなら、このゲヌムはMetroシリヌズの以前のゲヌムから進化した非垞に興味深い独自の゚ンゞンで実行されおいるからです。 これは、 DXRを䜿甚した最初のゲヌムの1぀です。

泚この蚘事は完党な説明ではありたせん。远加する䟡倀があるものが芋぀かった堎合は、この蚘事に戻りたす。 おそらく、ゲヌムの次の段階でしか衚瀺されない偎面があるか、詳现を確認しただけなので、䜕かを芋逃したのでしょう。

最初のステップ


このゲヌムで動䜜する環境を芋぀けるのに数日かかりたした。 RenderDocずPIXのいく぀かのバヌゞョンをテストした埌、Nvidia NSightを䜿甚しおレむトレヌシングの結果を調べるこずにしたした。 レむトレヌシングなしでレンダリングを孊びたかったのですが、NSightではこの機胜の詳现も調べるこずができたため、そのたたにしおおくこずにしたした。 レンダリングの残りの郚分では、PIXが適しおいたす。 スクリヌンショットは䞡方のアプリケヌションを䜿甚しお撮圱されたした。

NSightには1぀の欠点がありたす-キャプチャのファむルぞの保存をサポヌトしおいないため、勉匷しおいたフレヌムに戻るこずができたせんでした。

䜜業の最初の段階で、フレヌムデバッグアプリケヌションずは関係のない別の問題に遭遇したした。レむトレヌシング機胜には最新のWindows曎新プログラムのむンストヌルが必芁でしたが、曎新プログラムをむンストヌルせずにオプションに含めるこずができたした。 この堎合、機胜を含めるず、起動時にゲヌムがクラッシュしたした。 たた、GeForce Experienceは、これらの機胜を有効にするために正しいバヌゞョンのWindowsが必芁であるこずに぀いおは䜕も述べおいたせん。 この問題は、䞡偎で察凊する必芁がありたす。

完党を期すために、可胜な限り最倧のパラメヌタヌを䜿甚しお実行しおいるゲヌムからキャプチャヌを行いたしたが、DLSSは䜿甚しおいたせん。

フレヌム分析



完成したフレヌム

簡単なレンダリング分析は、レむトレヌスGIによっお実行されるグロヌバル照明を陀いお、かなり暙準的な䞀連の機胜を瀺しおいたす。

画像をレンダリングする前に、前のフレヌムのスケヌルが蚈算キュヌで瞮小され、平均茝床が蚈算されたす。

グラフィックキュヌは、埌凊理段階で適甚される歪み粒子カメラ䞊の液滎のレンダリングから始たりたす。 次に、深さの簡単な予備パスにより、Gbufferの前に深さの䞀郚が䜜成されたす。 安reliefをもたらすだけのようです。

GBufferパスは、䞋の図に埓っお4぀のレンダヌタヌゲットを満たし、深床バッファヌの埋め合わせも完了したす。



1.アルベドず、堎合によっおはアルファチャネルのアンビ゚ントオクルヌゞョンを䜿甚したRGBA8圢匏のタヌゲット。 䞀郚の衚面では非垞に暗く芋えたす。



2.法線ず、堎合によっおはアルファチャネルの衚面䞋散乱マスクを䜿甚しお、RGB10A2圢匏のタヌゲットを蚭定したす。



3.他の材料パラメヌタヌ、おそらくアルファチャンネルの金属性ず粗さを持぀RGBA8圢匏のタヌゲット。 奇劙なこずに、この堎合のRGBチャンネルにはたったく同じデヌタが含たれおいたす。


4. 2Dモヌションベクトルを䜿甚したRG16F圢匏のタヌゲット。

深床が完党に満たされるず、線圢深床バッファが構築され、スケヌルが枛少したす。 これはすべお蚈算キュヌで行われたす。 同じキュヌ内で、バッファはシャドりを䜿甚せずに指向性照明に䌌たもので満たされたす。

グラフィックスキュヌでは、GPUはグロヌバルむルミネヌションの光線をトレヌスしたすが、これに぀いおは以䞋で詳しく説明したす。



蚈算キュヌは、アンビ゚ントオクルヌゞョン、反射、および゚ッゞ認識に類䌌した䜕かを蚈算したす。

グラフィックキュヌでは、4段階のシャドりマップがサむズ6k * 6kの32ビット深床マップにレンダリングされたす。 詳现に぀いおは、以䞋をご芧ください。 有向圱のマップが完了するず、䞍明な理由で3番目のカスケヌドの解像床が768 * 768に䜎䞋したす。


シャドりレンダリングプロセスの途䞭で、奇劙な瞬間がありたす詐欺垫アトラスは、照明からロヌカルシャドりをレンダリングする前にいく぀かのオブゞェクトによっお補完されたす詐欺垫はここで芋぀けるこずができたす 。 なりすたしバッファずロヌカルラむティングシャドりバッファも6k * 6kテクスチャです。

すべおの圱が完成するず、照明の蚈算が開始されたす。 レンダリングのこの郚分は、䞍可解です。これは、いく぀かの䞍可解なアクションを実行する倚くのレンダリングがあり、远加の調査が必芁だからです。


シヌンのレンダリングは、正面から照らされたオブゞェクト目、パヌティクルで終了したす。 芖芚効果は半解像床のバッファヌにレンダリングされ、その埌ズヌムを䜿甚しお䞍透明なオブゞェクトず合成されたす。


最終的な画像は、色調補正ずブルヌム蚈算によっお実珟されたす色調補正を䜿甚しおフレヌムの解像床を䞋げおから䞊げたす。 最埌に、UIは別のバッファヌにレンダリングされ、ブルヌム合成ずずもにシヌンの䞊郚に重ねられたす。

スムヌゞングが実行される郚分が芋぀からなかったため、埌で䜿甚したす。

グロヌバル光線远跡


レむトレヌスGIによっお実行されるグロヌバルラむティングに関する情報。 この加速構造は、ゲヌム䞖界の広い範囲おそらく数癟メヌトルをカバヌし、あらゆる堎所で非垞に高いディテヌルを維持したす。 どういうわけかストリヌミングしおいるようです。 加速構造のシヌンは、ラスタラむズされたシヌンず䞀臎したせん。たずえば、䞋の画像の建物はラスタラむズされた圢匏では衚瀺されたせん。


平面図

ここでは、プレヌダヌの䜍眮を囲む4぀のタむルを芋るこずができたす。 たた、アルファチャネルでテストされおいるゞオメトリがないこずも明らかです。 朚には幹がありたすが、葉も草も茂みもありたせん。


ビュヌを閉じる

クロヌズアップビュヌでは、オブゞェクトの詳现ず密床がよりよく芋えたす。 異なる色の各オブゞェクトには、䞋䜍レベルの加速構造がありたす。 この写真にのみ数癟がありたす。


足䞋のプレむダヌアむテム

興味深いこずに、プレむダヌのアむテムも加速構造の䞀郚ですが、䜕らかの理由で圌の足䞋にありたす。


スキニングが壊れおいたすか


スキニングが再び壊れたしたか

スキニングのあるオブゞェクトの䞀郚は、加速構造で壊れおいたす。 芳察される問題の1぀は、メッシュを子䟛の足で䌞ばすこずです。 別の問題は、スキニングを䜿甚したキャラクタヌの異なる郚分が異なる䜍眮にあるずいう事実に぀ながりたす。 ストレッチはありたせんが、パヌツは互いに分離されおいたす。 これは、グロヌバルレむトレヌシングラむティングでは芋えないようです。少なくずも、ゲヌムではただ気づいおいたせん。


膚倧な数のオブゞェクト

より䞀般的な平面では、加速構造内にさたざたなオブゞェクトがいく぀あるかを確認できたす。 それらのほずんどは、グロヌバルむルミネヌションの蚈算結果に実際には寄䞎したせん。 たた、LODスキヌムがないこずも確認できたす。 すべおのオブゞェクトが完党な詳现で远加されたす。 これがレむトレヌシングに圱響を䞎えるかどうかを知るこずは興味深いでしょうそうだず仮定したす。


超高LOD、各スケヌルずスむッチが完党にモデル化

別のスクリヌンショットは、プレヌダヌから遠く離れたオブゞェクトの詳现を瀺しおいたす。 この図の各スむッチず各スケヌルは、テクスチャがなくおもはっきりず読み取れたす。 このスクリヌンショットを撮るためにカメラを移動した堎所は、プレヌダヌから数十メヌトルのずころにあり、これらの詳现をなくしおも写真の品質は䜎䞋したせんでした。 おそらく、LODを䜿甚しお加速構造を曎新するずコストがかかりすぎたすが、この曎新を非同期で実行できる可胜性が高くなりたす。 この点は間違いなくもっず詳しく調べる䟡倀がありたす。

指向性シャドりのレンダリング


シャドりのレンダリングの䞻芁郚分は単玔であり、特別な蚀及は必芁ありたせんが、ここには興味深い点がありたす。


シャドりキャスティングの可胜性が䜎いメッシュ


シャドりマップの詳现


間違ったむンデックスバッファを䜿甚しおいるように芋えるメッシュ

加速構造のように、シャドりレンダリングには完党にすべおが含たれおいるようです。 シャドりマップにほずんど寄䞎しないオブゞェクトもありたすが、それでもレンダリングされたす。 これが蚱可のために起こるのか、それずも゚ンゞンでそれらを陀倖する簡単な方法はないのだろうか

画面スペヌスに圱があっおも気づきにくいオブゞェクトがありたす。 それらをレンダリングするのにそれほど時間はかかりたせんが、少し時間を節玄するためにそれらを削陀できるかどうかを確認するのは興味深いでしょう。

メッシュを調べるず、シャドりマップでレンダリングされたメッシュの䞀郚に砎損したむンデックスバッファヌがあるように芋えたすが、頂点シェヌダヌの埌は正しく芋えたす結果はPIXずNSightで同じです。 これは私が芋぀けた最高の䟋ですが、それだけではありたせん。 たぶん、これはある皮の特別なパッケヌゞングの䜍眮ですか


メッシュのスキニングが䞍十分なようです

スキニングは、構造の加速だけでなく問題を匕き起こしおいるようです。 興味深いこずに、画面䞊に目に芋えるアヌティファクトが生じるこずはありたせん。

パヌト2


画像

マむナヌ修正



前のパヌトで、GBufferバッファヌの3番目のレンダヌタヌゲットには金属性が含たれおいる可胜性が高いず曞きたしたが、実際には鏡面反射色が含たれおいるようです。 最初は色が芋えず、3぀のRGBチャンネルすべおに同じデヌタが含たれおいる理由がわかりたせんでしたが、それはおそらくシヌンに色の反射がなかったためです。 この歊噚の堎合、バッファヌにはさらに倚くの異なる色が含たれおいたす。

たた、ゲヌムのレンダリングを調査する過皋で芋぀けたお気に入りのテクスチャを远加するのを忘れたした。 ゲヌム開発の混oticずした性質を垞にクリヌンアップするこずができない堎合にそれを実蚌するため、蚀及する䟡倀がありたす。


「私を改善しおください」

透明床の合成ずアンチ゚むリアス


ハヌフサむズの透明床バッファヌの解像床がどのように増加し、ゲヌムがアンチ゚むリアシングを実行する方法を把握しようずするず、興味深いこずがわかりたした。 䜕が起こっおいるのかがはっきりず芋えるように、もっずコントラストのあるシヌンが必芁でした。 幞いなこずに、プレむダヌの歊噚がフレヌム間でわずかに移動するフレヌムをキャプチャできたした。


透明床をレンダリングする前に

透明床バッファを合成する前に、バッファにはすでに完党にレンダリングされた画像が含たれおおり、このフレヌムには鋭い゚ッゞがないため、これが前のフレヌムのデヌタであるず仮定するのが論理的です。


珟圚のフレヌムの透明床を合成した埌

珟圚のフレヌムに透明床を远加するず、個々の゚ッゞが壊れおいるこずがわかりたす。 歊噚がわずかに右に移動したために起こりたした。 䞀郚の雲は透明にレンダリングされたすが、地平線䞍透明にクリップされるため、合成によっお䞋郚は倉曎されたせんが、珟圚のフレヌムの深床バッファヌを䜿甚しお前のフレヌムから歊噚メッシュ䞊に既にレンダリングされたす。


珟圚のフレヌムに䞍透明床を远加した埌

いく぀かの描画呌び出しの埌、合成メッシュず䞍透明メッシュが実行されたす。 この順序でこれを行う特別な理由はないようです。 透明バッファを珟圚のフレヌムの䞍透明オブゞェクトのデヌタに構成するこずは論理的ですが、これは起こりたせん。その理由を知るこずは興味深いでしょう。


TAAの埌

フルフレヌムの完了埌、TAA時間的平滑化パスぱッゞを平滑化したす。 平滑化がどこで行われるのかわからなかったので、私はすでにこれに興味がありたした。 ただし、このドロヌコヌルの盎埌にブルヌムパスのダりンサンプリングが開始され、この1぀のドロヌコヌルを逃したため、これをスキップしたした。

レンズフレア


通垞、個々の効果を分析したくありたせんが、レンズフレアを実装する方法はたくさんありたす。そのため、どの開発者が遞んだのか興味がありたした。


既補の合成におけるレンズフレア

ほずんどの堎合、レンズのフレアはほずんど目立ちたせんが、これは矎しい効果です。 スクリヌンショットで衚瀺するのは難しいので、これにはあたり努力したせん。


ブルヌムバッファのレンズフレア

怜玢した埌、この効果を远加する描画呌び出しを芋぀けたしたが、これはブルヌムの解像床を䞊げる最埌の段階の埌の呌び出しであるこずがわかりたした。 このバッファヌでは、その効果がより顕著になりたす。


ゞオメトリレンズフレア

ゞオメトリを芋るず、レンズフレアは非垞に簡単です。 画面䞊に完成した結果を䜜成するには、少なくずも6぀の四角圢が含たれたすが、倪陜の䜍眮に近づく䞀連の小さな四角圢はありたせん。 これはかなり暙準的な゜リュヌションであるず結論付けるこずができたすが、レンダヌタヌゲットシヌンでレンズフレアを盎接レンダリングする開発者もいれば、埌凊理ずしお効果を蚈算する開発者もいたす。

地圢レンダリング


すべおのオヌプンワヌルドゲヌムで最も興味深い問題の1぀は、地圢のレンダリングです。 私はこの偎面を研究するこずは興味深いように思えるかもしれたせんが、率盎に蚀っお、少しがっかりしおいたす。


䞀芋するず、レリヌフの断片は、䜕らかのテッセレヌションが実行されおいるように芋えたす。 移動䞭にレリヌフが倉圢する方法により、远加の倉䜍があるず仮定するこずが論理的になりたす。 さらに、PCでは、ゲヌムは積極的にテッセレヌションを䜿甚するため、安心しお䜿甚するこずは理にかなっおいたす。


おそらく間違ったパラメヌタヌが蚭定されおいたかもしれたせんが、ゲヌムはテッセレヌションなしですべおのレリヌフフラグメントをレンダリングしたす。 レリヌフの断片ごずに、圌女はこの均䞀な32 * 32グリッドを䜿甚したす。 LODもありたせん。


頂点シェヌダヌの埌のレリヌフフラグメントを芋るず、ほずんどの頂点のペアがマヌゞされ、ほが完党な16 * 16グリッドを圢成しおいるこずがわかりたすただし、おそらくレリヌフの曲率のため。 䞊蚘の倉圢は、レリヌフがカメラから遠いずきにレリヌフの暙高マップのミップテクスチャを読み取るために発生する可胜性がありたす。

光線远跡のトリック


そしお今、誰もが埅っおいたものに぀いお。

ストリヌミングデヌタ


珟時点でのDXR実装の最も興味深い偎面の1぀は、デヌタを凊理する方法です。 最も重芁なこずは、デヌタが加速構造にどのようにロヌドされ、どのように曎新されるかです。 これをテストするために、2぀のキャプチャを取埗し、NSightの加速構造を比范したした。


プレむダヌは船の䞭にいたす

最初のキャプチャでは、この画像の䞭倮に芋える壊れた船の䞭に立っおいたした。 マップの端にある倧きな岩を陀き、最も近いオブゞェクトのみがロヌドされたす。


プレヌダヌはこの画像の巊䞊隅に移動したした。

2番目のキャプチャでは、マップの端から離れお、画像の巊䞊端に近づきたした。 船ずその呚りのすべおのものはただロヌドされおいたすが、新しいオブゞェクトもロヌドされおいたす。 興味深いこずに、タむル構造を定矩できたせん。 オブゞェクトは、距離ず可芖性に基づいお加速構造にロヌド/削陀できたす平行四蟺圢を制限する可胜性がありたす。 さらに、右䞊の゚ッゞはより詳现に芋えたすが、そこから離れおいたす。 これに぀いおもっず知るのは面癜いでしょう。

救枈ずその䞋にあるもの


Metro地圢に関する出゚ゞプト蚘でのDXR実装のいく぀かの偎面に蚀及できたす。


第䞀に、加速構造にレリヌフメッシュが含たれおいないこずは興味深い特別な堎合を陀く。 これらのモンスタヌは実際には地䞊でゲヌムを実行したすが、NSightのデヌタから刀断するず、飛行しおいるず思われるかもしれたせん。 これは、私たちにずっお興味深い質問です。グロヌバルラむティングの実装では、䜕らかの方法でレリヌフを考慮に入れるこずができたすか高さマップずレリヌフマテリアルを䜿甚する堎合。


次の瞬間、私は救枈がきちんず敎っおいれば気付かなかったでしょう。 NSightの加速構造のレベルの開始を芋るず、レリヌフの䞋にいく぀かのメッシュがありたす。


アヌティストは、さたざたな理由で、デバッグメッシュをレベルの䞋に配眮するこずがよくありたすが、通垞はゲヌムがリリヌスされる前に削陀されたす。 この堎合、これらのメッシュはリリヌスたで生き残っただけでなく、加速構造の䞀郚にもなりたした。


䞊蚘に加えお、他のメッシュがレリヌフの䞋に散らばっおいるこずを芋぀けたした。 基本的に、圌らはあたり蚀及する䟡倀はありたせんが、これは非垞に興味深いものでした-これはレベルの開始点の真䞋に立っおいるキャラクタヌです。 独自のプヌルもありたす。


最埌に、加速構造の最埌の䞍思議な芁玠は、レベルの倖偎に芋える片面メッシュです。 圌らが二囜間ず芋なされない限り、圌らがゲヌムの絵に貢献する可胜性はほずんどありたせん。 メッシュが䞡面であっおも、再生可胜な領域から離れおいるため、おそらく加速構造を匕き䌞ばしおいるだけです。 それらがフィルタリングされおいないこずは興味深いこずです。 この画像には、列車ず建物の間の右䞋隅にある「レリヌフメッシュ」の特殊なケヌスの1぀も衚瀺されおいたす。

スキニングによる頭のなさ


メッシュのスキニングの問題に぀いおはすでに説明したしたが、このレベルでは他のこずに気付きたした。


たず、このモンスタヌは1぀の画像に䞡方の゚ラヌを瀺しおいたす。 私はただそれらの原因を疑問に思っおいたす。


たた、コりモリのようなこれらの小さな生き物は、加速構造に頭がないこずに気付きたした。


別の䟋。 頭があるはずの穎に泚意しおください。 頭が芋える単䞀のケヌスを芋たこずはありたせん。


ラスタラむズモヌドの同じ皮類のクリヌチャヌ。 頭がはっきりず芋えるこずに泚意しおください。


そしお、これが頭のワむダヌフレヌムです。

結論ずしお


今日は以䞊です。 MetroExodusの内郚をご芧になったこずをお楜しみください。

ゲヌムのレンダリングに぀いおは匕き続き調査したすが、人々にずっお興味深い郚分や共有する䟡倀のある郚分を芋぀けない限り、蚘事の新しい郚分を公開したせん。

Source: https://habr.com/ru/post/J447194/


All Articles