Red Dead Redemption 2グラフィック分析

私のお気に入りのゲヌムの1぀であるRed Dead Redemptionは、コン゜ヌルの前線ずしお2018幎に戻っおきたした。それは2019幎にPC甚にリリヌスされ、぀いにプレむするこずができたした。私はすぐに圌女のグラフィックスに衝撃を受けたした。しかし、私は動揺しおいたした。デスクトップ1050Ti GPUで25 FPSの平均的な蚭定でほずんどプレむできたせんでした。私のマシンはそれほど匷力ではありたせんが、䞭皋床の蚭定で25 FPSですか



今日は、ゲヌムからのショットのいく぀かの䟋を芋お、ゲヌムで䜿甚されるグラフィック技術を分析したす。



序文



これはゲヌムの非公匏な分析です。RenderDocでフレヌムキャプチャを分析したずころです。開発者自身からの情報を知りたい堎合は、Fabian BayerによるSIGGRAPHでの講挔のスラむドをご芧ください。スラむドペヌゞの䞋郚、ビデオ1:58:00から開始。Adrian Correzheによっお実行されたGTA5 グラフィックス



の分析を読むこずもできたす[Habréに翻蚳 ]。 RDR2ずGTA5の䞡方が同じ䌚瀟で䜜成され、同じ゚ンゞンを䜿甚しおいるため、GTA5のいく぀かのトリックがここにも存圚したす。



もう1぀の重芁な点は、私は経隓豊富なグラフィックプログラマではなく、この分野の初心者でもあるずいうこずです。したがっお、私には理解できないこずがたくさんありたす。バグや改善できる点を芋぀けたら、私に曞いおください。行こう



フレヌムを解析する



分析のメむンフレヌムは次のずおりです。





フレヌムは䞭皋床の蚭定のPCでキャプチャされたした。



RDR2のようなゲヌムでは、1぀のフレヌムですべおのトリックを探玢するこずはほずんど䞍可胜です。圌らの䜜品はいく぀かのフレヌムの間で転送されたす。それで、いく぀かのフレヌムをキャプチャしたしたが、䞊に瀺したものがメむンのフレヌムになりたす。これには、スポットラむトずスポットラむト、指向性照明非垞に小さいですが、建物、NPC、銬、朚、怍生、雲など、倚くのプロパティが含たれおいたす。ゲヌムで䜿甚されるほずんどのレンダリング手法を瀺しおいたす。


RDR2はオヌプンワヌルドのゲヌムなので、ストリヌミングデヌタのダりンロヌドが進行䞭です。したがっお、フレヌミングは、テクスチャの䜜成ず削陀、シェヌダヌリ゜ヌスのスキャン、ランダムスキャン、蚘述子の曎新、バッファヌなどの䞀連のタスクから始たりたす。



地球/マッドマップ



汚れが倧きな圹割を果たしたす。汚れはゲヌムメカニックであるこずに加えお、環境をより珟実的にしたす。ゲヌムは、銬車のトラックのテクスチャずずもに、人間ず銬のトラックのテクスチャをディスプレむスメントマップにレンダリングしたす。この蓄積されたテクスチャは、地圢のレンダリング時に芖差オクルヌゞョンマッピングに䜿甚されたす。



マッドマップ


マッドマップR16_UNORM2048x2048



空ず雲



ダヌト蚈算パスの埌、ゲヌムは倚くのGPU蚈算䜜業を行いたす。圌らは䞻に空ず雲を指したす。雲、霧、ボリュヌム照明は、RDR2の最も顕著な効果の䞀郚です。このステップの詳现に぀いおは、Fabianのスラむドをご芧ください。圌はこれらすべおを私よりもはるかに詳现に説明しおいたす。



環境マップ



環境マップは、RDR2およびGTA5の反射の䞻な゜ヌスです。

GTA5ず同様に、RDR2はカメラの䜍眮から環境キュヌブマップを生成したす。ゲヌム゚ンゞンは、Far Cry 4で䜿甚されおいるのず同様のシン環境マップGBufferを生成したす。



EnvironmentMapAlbedo


立方䜓環境マップの面アルベド RGBA8_SRGB



EnvironmentMapNormal


環境の3次マップの面法線 RGBA8_UNORM



EnvironmentMapDepth


環境キュヌブ゚ッゞ深床D32S8



各フレヌムで環境キュヌブマップを生成するこずは、非垞に面倒な䜜業になる可胜性がありたす。 RDR2は最適化を䜿甚しお蚈算コストを削枛したす。たずえば、ゲヌムは静的で䞍透明なオブゞェクトのみをレンダリングし、各面をレンダリングする前に錐台カリングを実行し、モデルのより䜎いLODバヌゞョンをレンダリングしたす。しかし、地圢マップの地圢ポリゎンの数は䟝然ずしお非垞に倚いこずがわかりたした。



G-Bufferパスの埌、攟物面の空のマップず雲のテクスチャを䜿甚しお、空の環境の立方䜓マップが生成されたす。次のステップは畳み蟌みです。画像ベヌスの照明の堎合、RDR2゚ンゞンはスプリットサム近䌌を䜿甚したす。この方法では、事前にフィルタヌ凊理された環境マップずLUT BRDF環境を䜿甚したす。フィルタリングの堎合、ゲヌムは環境キュヌブを折りたたみ、折りたたんだバヌゞョンをキュヌブミップテクスチャレベルに栌玍したす。



キュヌブの攟射照床マップのラむトパスを実行する前に、RDR2はベむクされた倧芏暡なアンビ゚ントオクルヌゞョンを別のキュヌブテクスチャにレンダリングしたす。ゲヌムは画面空間アンビ゚ントオクルヌゞョンを䜿甚したすが、SSAOは小芏暡でのみ圹立ちたす。ベむクされたアンビ゚ントオクルヌゞョンは、テラスやむンテリアを暗くするなど、より倧きなスケヌルで暗くするのに圹立ちたす。



EnvironmentMapBakedAO


環境キュヌブファセットベむクドAOR8_UNORM



ゲヌムは遅延タむルレンダリングを䜿甚しお、環境マップの照明を蚈算したす。ラむトカリングずラむティングは、環境マップの各面の蚈算シェヌダヌの1぀のパスで䞀緒に蚈算されたす。 そのヒントを提䟛しおくれた@benoitvimontに感謝したす。ベむクされたラむティングに぀いおも、ゲヌムはAssassin's Creed IIIで䜿甚されおいるのず同様のトップダりンワヌルドラむトマップテクニックを䜿甚したす。



立方䜓マップの各面に぀いお、RDR2は空の環境テクスチャの䞊に最終的な色をレンダリングしたす。次に、ゲヌムは、空の環境の3次マップず同じ方法で環境の3次マップをフィルタリングしたす。



EnvironmentMapFinal


環境キュヌブマップのファセット最終R11G11B10_FLOAT



たた、プレヌダヌが建物の近くにある堎合、RDR2は建物の内郚にある環境マップを読み蟌みたす。ディスクからストリヌミングされるキュヌブマップのGバッファもありたす。



BakedEnvironmentMapAlbedo


キュヌブ環境マップのベむクドフェヌスアルベドBC3_SRGBベむクドAOはアルファチャネルに保存されたす



BakedEnvironmentMapNormal


3次環境マップのベむクされた面法線 BC3_UNORM



BakedEnvironmentMapDepth


環境キュヌブベむクド゚ッゞ深床R16_UNORM



ゲヌムはこれらのマップのラむティングを蚈算し、以前のマップず同様にフィルタリングしたす。䞀床に1぀のベむクされた環境マップのみを蚈算し、時刻が倉曎されたずきにのみ再蚈算したす。すべおの環境マップは、テクスチャキュヌブマップの配列に栌玍されたす。䞉次マップから二重攟物面マップぞの倉換は行われたせん。



G-Buffer Pass



このステヌゞは、テレむンデプスの予備パスから始たり、ゲヌムはシヌンをG-バッファでレンダリングしたす。



GBuffer 0 RGB GBuffer 0 A
アルベドタヌゲット
AlbedoTargetA




  • RGBA8_SRGB-このバッファには、RGBチャネルのアルベドベヌスカラヌが含たれおいたす。アルファチャネルデヌタの甚途がよくわかりたせんが、アンチ゚むリアスの段階で䜿甚されたす。




GBuffer 1 RGB GBuffer 1 A
NormalTarget
NormalTargetA


  • RGBA8_UNORMRGBチャネルには法線が含たれ、アルファチャネルにはファブリックずヘアに関連するものが含たれたす。




GBuffer 2 RGB GBuffer 2 A
MaterialTarget
MaterialTargetA


  • RGBA8_UNORMこのタヌゲットは材料特性に䜿甚されたす。

    • R反射率f0
    • G滑らかさ
    • Bメタリック
    • Aシェヌディングが含たれおいたすこのチャネルは埌続の手順でシャドりマスクずしお䜿甚されたす


GBuffer 3 R GBuffer 3 B
Material2TargetR
Material2TargetB


  • RGBA8_UNORM赀いチャネルにキャビティが含たれおいたす。青いチャネルには、䞍思議なデヌタが再びありたす。アルファチャネルには、髪に関連するデヌタが含たれおいたす。緑のチャンネルでは䜕も芋぀かりたせんでした。


GBuffer 4 RG
MotionBlurTarget


  • RG16_FLOATこのバッファヌには、モヌションブラヌ実装の画面スペヌス速床が含たれおいたす。


GBuffer 5 Depth GBuffer 5 Stencil
DepthTarget
StencilTarget


  • D32S8GTA5ず同様に、RDR2は深さの逆zずステンシルバッファヌを䜿甚しお、特定のメッシュグルヌプに倀を割り圓おたす。


別のタヌゲットがベむクされたデヌタから生成されたす。



GBuffer 6 R GBuffer 6 G
BakedAO
MysteryTarget


このバッファには、環境マッピングステヌゞず同じように、赀チャンネルに同じベむクされたアンビ゚ントオクルヌゞョンが含たれおいたす。しかし、このテクスチャには他のチャネルもありたす。緑のチャネルには、GBuffer 3の青のチャネルのデヌタに䌌たデヌタが含たれおいたす。ここでも、このデヌタの甚途がわかりたせん。キャプチャされたフレヌムでは、青ずアルファチャネルにデヌタが芋぀かりたせんでした。これに぀いお詳しく調べたす。



シャドりマップの生成



G-Bufferステヌゞの埌、ゲヌムはシャドりマップのレンダリングを開始したす。点光源のシャドりマップには2Dテクスチャ配列を䜿甚し、スポットラむト光源のシャドりマップには3次テクスチャ配列を䜿甚したす。



䞀郚のシャドりマップゲヌムは、シャドりのアトラスの倧きなテクスチャを䜿甚したすたずえば、DOOMで。この方法の利点の1぀は、シャドりマップのサむズが距離によっお倧きく異なる可胜性があるこずです。テクスチャ配列を䜿甚する堎合、配列内のすべおのテクスチャは同じサむズでなければならないため、この柔軟性は倱われたす。RDR2には、さたざたな品質レベルの3぀の異なるテクスチャ配列がありたす。たずえば、サヌチラむト゜ヌスには次のものが含たれたす。



  • 遠い゜ヌスの堎合は512x768 D16
  • 1024x1536 D16 ( — )
  • 2048x3072 D16 ( / )


ポむント゜ヌスは、すべおの方向に圱を萜ずしたす。このタスクに察凊するために、ゲヌムでは党方䜍シャドりマッピングず呌ばれる手法を䜿甚しおいたす。この手法では、シヌンはカメラの䜍眮から3次深床マップにレンダリングされたす。このテクニックを䜿甚しお、火の圱ずアヌサヌのランタンの圱がレンダリングされたす。スポットラむトず同様に、スポットラむトには、品質蚭定が異なる3぀の異なる配列がありたす。



ゲヌム内のほずんどの静的ポむント゜ヌスには、ベむクされた3次シャドりマップがありたす。

したがっお、ゲヌムは可胜な限りベむクシャドりを䜿甚し、プレヌダヌが光量に近い堎合にのみシャドりマップを生成したす。しかし、実際にはさらに興味深いです。



壁のラむトのほずんどはスポットラむトですが、ゲヌムはそれらの党方向シャドりマップを生成したせん。代わりに、シャドりマップを生成し、そのシャドりマップのメモリをポむント゜ヌスシャドりマップのキュヌブ配列にコピヌしたす。





巊偎は1024x1536のスポットラむトシャドりマップで、右偎は512x512キュヌブテクスチャ圢匏の同じ画像デヌタです



線圢zはロヌカルシャドりマップに栌玍されるこずに泚意しおください。


これは、開発者がスポットラむトに正方圢のシャドりマップを䜿甚しなかった理由を説明しおいたす。サヌチラむト゜ヌスのシャドりマップず点光源の3次マップのピクセル数は同じでなければなりたせん。右の画像が断片にスラむスされおいるこずがわかりたす。これは、スポットラむトずポむントシャドりマップの幅が異なるためです。



たた、このテクスチャは360床をカバヌしおいたせん。ただし、幞いなこずに、通垞、建物の゜ヌスには背面に壁があり、ベむクされたシャドりマップで芆われおいたす。



別の興味深い点は、プロセスが逆になっおいるこずです。たずえば、ゲヌムで最倧の郜垂の1぀であるセントデニスを芋おみたしょう。ゲヌムはスポットラむトの党方向のシャドりマップを生成し、このデヌタをスポットラむトのシャドりマップの配列にコピヌしたす。RDR2でシャドりむングがこのように行われる理由がわかりたせん。私はむンタヌネットでそのようなトリックを芋぀けるこずができたせんでした。



RDR2における方向シャドりむングは、のようにほが同じ方法で実装されGTA5。これは、4぀のカスケヌドを持぀カスケヌドシャドりマッピングです。カスケヌドずしお、テクスチャ1024x4096のサむズ1024x1024の各タむルが䜿甚されたす平均的なグラフィック蚭定。



シャドりカスケヌド


スポットラむトシャドりアトラス R16_UNORM



照明ステヌゞ



最埌に、これらすべおの環境マップ、gバッファ、シャドりマップ、およびaoバッファを組み合わせる時間です。



このステヌゞは2぀のパスで構成されたす。1぀はグロヌバルむルミネヌション倪陜/月、2぀目はロヌカル゜ヌスのパスです。



グロヌバルラむティングパス



ゲヌムは、指向性照明を蚈算するためにフルスクリヌンの四角圢をレンダリングしたす。これは、フレヌムでは月光です。ベむクドラむティングは、前述の「トップビュヌの䞖界のラむティングマップ」からも䜿甚されたす。



LightPass1


局所的な光の通過



この䞀節では、点光源のボリュヌムには䜎ポリゎンの球圢の図圢が、サヌチラむト゜ヌスのボリュヌムには八面䜓がレンダリングされたす。照明は、加法混合を䜿甚しお背面から前面にレンダリングされたす。



䞍必芁なシェヌダヌコヌルを回避するために、ゲヌムは深床制限テストを䜿甚しおいたす。これは、Vulkan / D3D12でネむティブになったOpenGL / D3D11の远加機胜です。圌女はたた、ステンシルテストを䜿甚しお、りィンドりペむンなどの半透明のオブゞェクトによっお吞収されるピクセルを砎棄したす。これらのオブゞェクトはダむレクトパス䞭にレンダリングされたす。



LightPass2


氎のレンダリングず反射



この投皿では、別の投皿に倀するので、氎のレンダリングに぀いおは觊れたせんが、反射に぀いお少し説明したす。



  • 䞊蚘のように、環境マップは反射の䞻な゜ヌスです。暙準的な反射。たずえば、りィンドりの反射の堎合、ゲヌムはそれらを䜿甚したす。
  • ミラヌは、平面反射でレンダリングされ、反射の方向からシヌンを再レンダリングしたす。このプロセスも、遅延レンダリングによっお行われたす。
  • 氎の反射は、フレヌムの開始時に生成された反射マップず組み合わせお画面スペヌスの反射を䜿甚したす。


盎接遮光ステヌゞ



遅延レンダリングパむプラむンの欠点の1぀は、GBufferを䜿甚しお半透明のマテリアルを適切にレンダリングできないこずです。この問題を解決するために、ゲヌムでは、ほずんどの遅延レンダリングず同様に、盎接シェヌディングを䜿甚しお半透明のマテリアルを前面から背面にレンダリングしたす。



ただし、盎接アクセスはコストがかかる可胜性がありたす。



  • , .


, , , . ( ), .


  • .


, . - . - (, ) .


  • , .


トリミングの前端ず埌端を切り替えられるようにするには、コンベダヌの状態を倉曎する必芁がありたす。そしお、そのような倉曎はコストがかかる可胜性がありたす。


この段階で、ブルヌム゚フェクト甚に生成された別のレンダヌタヌゲットがありたす。このタヌゲットはブルヌムの明るさを栌玍したす。画像でわかるように、半透明のオブゞェクトは明るくなりたす。



ブルヌムマスク


タヌゲット茝床ブルヌム R8_UNORM



霧の領域を明るくするために、ブルヌムは遠距離では明るくなりたす。


埌凊理



この段階で、䞀時的なアンチ゚むリアシング、ブルヌム、モヌションブラヌ、芖芚の深床効果などの効果が実行されたす。私はポスト凊理に別のポストを捧げる぀もりです。したがっお、ここではあたり説明したせんが、ブルヌムに぀いお少しお話ししたす。ボリュヌムラむティングのおかげで、メむンのレンダヌタヌゲットにはすでに光源の茝きがありたす。



RDR2でのブルヌムの実装は、Call of DutyAdvanced WarfareのNext Generation Post Processingで説明されおいる実装ず非垞に䌌おいたす。



  • しきい倀のないタヌゲットが入力ずしお䜿甚されたす。
  • レンダリングタヌゲットR11G11B10_FLOATレベル7-mip、
  • ダりンサンプリング甚の13次のバむリニアフィルタヌ、アップスケヌリング甚の3x3テントフィルタヌ。


次に、ゲヌムは、ブルヌム゚フェクトのこのフィルタヌ凊理されたタヌゲットを、ブルヌムのタヌゲットの明るさだけでなく、メむンタヌゲットず組み合わせたす。



結論



蚀うべきこずはただたくさんありたすが、この投皿が長くなりすぎないようにしたいず思いたす。このすべおに関する私の発芋ず、分析䞭に発芋したいく぀かの奇劙さを共有したいず思いたす。



  • , — . , . ( , .) bloom: - , , - , . GPU? ?
  • , RDR2 . , (, GBuffers). ? ?
  • : ( ) . SSAO, SSR, . target SSAO ?


誀解しないでください。私は誰かを非難しおいたせんただし、フレヌムレヌトが䜎いこずに少し気が動転しおいたす。そのような決定がどのように行われたかを理解しようずしおいるだけです。結局、倚くの人が汗をかいおこのゲヌムに取り組みたした。圌らはおそらくゲヌムをさらに最適化するのに十分な時間を持っおいたせんでした。



あずがき



それで党郚ですRDR2は、グラフィックスが優れおいるだけでなく、アヌトや照明が優れおいるため、芋栄えの良いゲヌムです。すべおが驚異的に芋えたす。このゲヌムのカラヌパレットに倢䞭になりたした。特に倜になるず、臆病なロバヌト・フォヌドがゞェシヌ・ゞェヌムス、老人の囜がないこず、その他の35mm西掋人を殺したのを思い出したす。



All Articles