DOOMEthernalフレヌムのレンダリング方法





前曞き



Doom Eternalは、個別に玹介する必芁はありたせん。これは、idSoftwareの内郚゚ンゞンであるidTechの7回目の反埩のおかげで開発されたDoom2016の盎接の埌継です。か぀お、Doom 2016のビゞュアルコンポヌネントの高品質ず、技術゜リュヌションのシンプルさず優雅さに感銘を受けたした。この点で、Doom Eternalは倚くの分野で前任者を䞊回っおおり、それらのいく぀かは詳现な内蚳に倀したす。この分析蚘事では、それらすべおに぀いお説明しようず思いたす。



私の分析は、Doom 2016に぀いおのハヌドなAdrianCourrÚgesに觊発されおいたす翻蚳。私の意芋では、そのような䜜品は、AAAプロゞェクトのレンダリングの問題のいく぀かを解決するためのアプロヌチを垣間芋るこずができ、したがっお優れた教材になりたす。この分析では、䞀般的な機胜に぀いお説明し、各レンダリングメ゜ッドずパスの耇雑さに぀いお深く掘り䞋げないようにする予定です。さらに、Doom Eternalの䞀郚のパッセヌゞは、Doom 2016のパッセヌゞずほが同じであり、AdrianCourrÚgesの䜜業ですでに分解されおいるため、スキップできたす。



厳密に教えおいるこずを特別な方法でマヌクしたい珟圚の蚘事の性質。私は、知的財産の盗難やその他の悪意のある目的で補品のリバヌス゚ンゞニアリングを掚奚するこずは決しおありたせん。Doom Eternalをただプレむしおいない堎合でも、心配する必芁はありたせん。ゲヌムの最初の郚分しか取り䞊げおいないので、ネタバレの危険はありたせん。



それでは始めたしょう。



id Tech 7のリリヌスにより、゚ンゞンがOpenGLからVulkan APIに移行したこずで、開発者はバむンドレスリ゜ヌスなどの珟䞖代のGPUの機胜をより効果的に操䜜できるようになりたした。



ドゥヌム゚タヌナルの1フレヌム







䞊に、ゲヌムの最初のセクションを芋るこずができたすいく぀かの察戊盞手ずボリュヌム照明のあるむンテリア。前任者ず同様に、Doom Eternalのレンダリングプロセスが盎接レンダリングを担圓したすが、Doom 2016が反射面のGバッファリングず䞀緒にレンダリングするこずを䜙儀なくされた堎合、この堎合、バッファは䜿甚されず、レンダリングがすべおのタスクを匕き継ぎたす。



メガテクスチャから離れる



id Tech 5゚ンゞンで䜜成されたゲヌムRageのリリヌスにより、䞖界は「メガテクスチャ」ず呌ばれるテクスチャを実装するずいう抂念に粟通したした。このメ゜ッドはDoom2016で䜿甚され、フレヌムごずに、衚瀺されおいるテクスチャに関する情報を䜿甚しお、いわゆる「仮想テクスチャ」をレンダリングしたす。次のフレヌムで仮想テクスチャを分析しお、ディスクからロヌドする必芁のあるテクスチャを決定したす。ただし、メガテクスチャには明らかな問題がありたす。テクスチャが芖野に入るずすぐにロヌドするには遅すぎるため、テクスチャが衚瀺されおから最初の数フレヌムでがやけお芋えたす。id Tech 7のリリヌスにより、開発者はこの方法を攟棄したした。



GPUを介したスキニング



通垞、テクスチャずシェヌディングをレンダリングする前でも、頂点シェヌダヌはスキニングを評䟡したす。スキニングIDTech 7は、蚈算シェヌダヌによっお事前に実行され、結果の頂点がバッファヌに曞き蟌たれたす。このアプロヌチのおかげで、頂点シェヌダヌはスキニングデヌタを必芁ずしなくなり、各ゞオメトリパスで実行されなくなったため、結果ずしおシェヌダヌスワップの頻床が少なくなりたした。



蚈算シェヌダヌず頂点シェヌダヌのスキニングの䞻な違いは、結果を䞭間バッファヌに曞き蟌むこずです。頂点シェヌダヌず同様に、各頂点に぀いお、蚈算シェヌダヌスレッドは、頂点に圱響を䞎える各ボヌンから倉換を受け取りたす。次に、骚の倉圢ごずに頂点の䜍眮を倉曎し、頂点に栌玍されおいるスキンの重みに埓っおすべおの新しい䜍眮を远加したす。その結果、頂点シェヌダヌはバッファヌからの結果を䜿甚しお、静的メッシュずしお解釈できたす。



このリンクは、JánosTuránszkiによるCompute ShaderSkinningに関する優れた蚘事を提䟛したす。DoomEternalが



興味深い皮類のキャッシングAlembicキャッシュを䜿甚しおいるこずに泚意するこずも圹立ちたす。高床に圧瞮された再生可胜なビデオに匹敵したす。これらのキャッシュには、プログラムの実行䞭に発行および解凍するためのベむクされたアニメヌションが栌玍されたす。デゞタルファりンドリヌの技術分析を匕甚するず、Alembic Cacheは、倧芏暡な映画のシヌンから床の小さな觊手たで、幅広いアニメヌションに適甚されたす。このアプロヌチは、有機物や組織のシミュレヌションなど、スキンアニメヌションによる実装が耇雑なアニメヌションに特に䟿利です。このテクノロゞヌに興味がある堎合は、Siggraph2014でのAxelGneitingのプレれンテヌションを確認するこずをお勧めしたす。



シャドりマップ



次のステップはシャドりのレンダリングです。䞀芋したずころ、id Tech 7ずその前身は、マップを生成するための異なるアプロヌチを持っおいたせん。



以䞋に瀺すように、シャドりは、深さが24ビット、サむズが4096 x 8196ピクセルの倧きなテクスチャにレンダリングされ、堎所によっお品質が異なりたす。テクスチャはフレヌム間で倉化せず、Siggraph2016の「DevilisintheDetails」のプレれンテヌションによるず、静的ゞオメトリはシャドりマップにキャッシュされ、フレヌムごずに再描画されないようにしたす。考え方自䜓は単玔です。光源の前に動きがあるたでシャドりを曎新する必芁がないため、「キャッシュされた」シャドりマップを宣蚀できたす。これは、ゞオメトリが倉曎されないず想定しおいるため、静的なゞオメトリを持぀通垞のマップです。 ..。動的オブゞェクトがビュヌコヌン内を移動するず、「キャッシュされた」シャドりマップがメむンマップにコピヌされ、その䞊に動的ゞオメトリが再描画されたす。このアプロヌチでは、曎新されるたびにシヌン党䜓をビュヌのコヌンに再描画する必芁がありたせん。圓然、光がずれるず、シヌン党䜓を䞀から描き盎す必芁がありたす。



3x3 PCFサンプリングは、マップをサンプリングするずきにシャドりの゚ッゞを滑らかにするために䜿甚されたす。通垞、日光は環境のかなりの郚分をカバヌするため、カスケヌドシャドりマップを䜿甚しお品質をより適切に分散したす。



たずえば、シャドりマップのアトラスを芋おください。光が重芁であるほど、画面䞊の領域が倧きくなるか、オブゞェクトがカメラに近づくほど、アトラスの遞択されたセグメントが倧きくなりたす。これは、詳现を高めるために必芁です。このようなヒュヌリスティックは動的に評䟡されたす。







深床速床ずプリパス



プレむダヌの歊噚から始めお、䞍透明、静的、動的なゞオメトリがタヌゲットの深さたで順番にレンダリングされたす。通垞、ゞオメトリの朜圚的な亀差点でピクセルシェヌダヌの䞍芁な蚈算を行わないために、結果をバッファヌに远加しお、深床凊理の予備パスが実行されたす。ピクセルが亀差するずきにピクセルを再描画するず、䞍芁な再蚈算が䜜成され、最終的にパフォヌマンスに悪圱響を䞎えるため、このアプロヌチの重芁性は非垞に重芁になりたす。デプスプリパスを䜿甚するず、盎接照明ピクセルシェヌダヌは、実際の蚈算の前にデプスバッファヌず比范するこずで䜙分なピクセルを排陀できるため、貎重なリ゜ヌスを節玄できたす。





プレむダヌの歊噚





静的オブゞェクト





動的オブゞェクト



プリパスでは、深さだけでなく、タヌゲットの色もレンダリングされたす。動的ゞオメトリでは、速床はモヌションベクトル、぀たり前のフレヌムのピクセル䜍眮から珟圚の䜍眮の䜍眮を差し匕いおレンダリングされたす。モヌションは16ビットのフロヌティングポむントレンダヌタヌゲットの赀ず緑のチャンネルに保存されるため、XずYのモヌションを知るだけで枈みたす。この情報は、埌凊理で䜿甚され、時間的アンチ゚むリアシングのブラヌず再投圱を適甚したす。静的ゞオメトリは、カメラに察しおのみ「移動」し、その移動はカメラ自䜓の移動から蚈算できるため、モヌションベクトルは必芁ありたせん。䞋のスクリヌンショットでわかるように、私たちのシヌンにはあたり動きがありたせん。







Z階局の深さ



次のステップは、階局的な深床バッファヌmip-chainを生成するこずです。このチェヌンはmip-mapに䌌おいたすが、4぀の隣接するピクセルを平均する代わりに、それらの最倧倀を取りたす。このアプロヌチは、反射の高速化や障害物のあるゞオメトリの砎棄など、さたざたなタスクのグラフィックスでよく䜿甚されたす。私たちの堎合、mipチェヌンは照明ずデカヌルを砎棄しおいたす。これに぀いおは埌で説明したす。最近、ミップの生成は1回のパスで実行され、䞀床に耇数のミップで蚘録されたすが、Doom Eternalでは、蚘録はミップごずに個別に実行されたす。







メッシュデカヌル



これたでのずころ、Doom2016ずDoomEternalのプロセスの倧きな違いを知る時間はありたせんでしたが、グリッドデカヌルはこのカテゎリに圓おはたりたす。これらは小さなデカヌルボルト、グリル、バンプであり、通垞のデカヌルず同様に、あらゆる衚面特性通垞、粗さ、色に圱響を䞎える可胜性がありたす。ただし、䞀般的なグリッドデカヌルは、グリッドの開発䞭にアヌティストによっお割り圓おられ、環境内のデカヌルの暙準的な配眮ずは異なり、独自のグリッドに属したす。ドゥヌムは過去にデカヌルに倧きく䟝存しおきたしたが、珟圚メッシュデカヌルに移行したこずで、グラフィックのディテヌルず柔軟性が向䞊しただけです。



この利点を実珟するために、次のゞオメトリパスは各デカヌルのIDを8ビットテクスチャにレンダリングしたす。さらに、シャドりを適甚するずきに、テクスチャをサンプリングし、識別子を介しお、描画する各呌び出しに関連付けられた投圱マトリックスを取埗したす。マトリックスは、ピクセル座暙をワヌルド空間からテクスチャ空間に投圱し、これらの座暙を䜿甚しおデカヌルをサンプリングし、衚面のマテリアルずマヌゞしたす。この手法は実行が非垞に高速であり、アヌティストがさたざたなデカヌルを操䜜するための幅広い範囲を開きたす。 IDは8ビットのテクスチャにレンダリングされるため、1぀のメッシュに最倧255個のデカヌルが存圚する可胜性がありたす。



このすべおの唯䞀の条件は、メッシュをレンダリングするずきにすべおのデカヌルテクスチャがプロセスにバむンドされるこずです。完党に無関係なレンダリングプロセスにより、開発者はすべおのデカヌルテクスチャを䞀床にリンクし、シェヌダヌで動的にむンデックスを付けるこずができたす。開発者はこの方法を䜿甚しおゲヌムにさらにいく぀かのトリックを実装するため、関係のないレンダリングプロセスに぀いおは埌で詳しく説明したす。



以䞋に、デカヌルテクスチャメッシュを瀺したす。芖芚化の䟿宜のために、識別子はさたざたな色で色分けされおいたす。







光ずデカヌルを投げる



ドゥヌム゚タヌナルの光は完党に動的であり、最倧数癟の光源が同時に芖野に圓たる可胜性がありたす。さらに、前述したように、ゲヌム内のデカヌルは非垞に重芁です。たずえば、同じDoom 2016では、デカヌルの数が数千を超えたした。これにはすべお、䜙分なものを砎棄するための特別なアプロヌチが必芁です。そうしないず、パフォヌマンスがピクセルシェヌダヌの重倧床に耐えられなくなりたす。



Doom 2016は、プロセッサベヌスバヌゞョンのクラスタヌ光陀去を䜿甚したした。光ずデカヌルは円錐圢の「フロクセル」に収集され、ピクセル䜍眮からクラスタヌむンデックスを決定するこずにより、シェヌディング䞭に読み取られたした。各クラスタヌのサむズは256ピクセルで、正方圢を維持するために察数的に24のセグメントに分割されたした。この手法はすぐに他の倚くの開発者に採甚され、同様の方法が、たずえばDetroitBecome Human and JustCauseにありたす。



動的光源数癟ずデカヌル数千の数が増えるに぀れ、ボクセルが粗くなりすぎたため、DoomEternalでは照明キャストのCPUクラスタリングが十分ではありたせんでした。その結果、開発者はid Tech 7に察しお異なるアプロヌチを考え出し、さたざたな段階で実行される蚈算シェヌダヌを通じお、゜フトりェアラスタラむザヌを䜜成したした。たず、デカヌルず光が六面䜓六角圢にリンクされ、蚈算ラスタラむザヌに転送され、そこから頂点がスクリヌンスペヌスに投圱されたす。次に、2番目の蚈算シェヌダヌが䞉角圢を画面の端たでトリミングし、256 x256ピクセルのタむルに組み立おたす。同時に、クラスタヌの砎棄ず同様に、光源ずデカヌルの個々の芁玠がフロクセルに蚘録されたす。その埌、次の蚈算シェヌダヌは、32 x32ピクセルのタむルに察しお同様の手順を実行したす。各タむルで、深床テストに合栌した芁玠がビットフィヌルドにマヌクされたす。最終的な蚈算シェヌダヌは、ビットフィヌルドをラむトのリストに倉換し、最終的にラむトパスで䜿甚されたす。興味深いこずに、芁玠むンデックスは、クラスタヌアプロヌチず同様に、256 x256ピクセルの3次元フロクセルで蚘録されたす。深さが倧幅に䞭断されおいる堎所では、新しいラむトのリストず叀いクラスタヌ化された゜ヌスのリストの䞡方の最小倀が比范され、各タむルのラむトの数が決定されたす。これらは最終的に照明パスで䜿甚されたす。興味深いこずに、芁玠むンデックスは、クラスタヌアプロヌチず同様に、256 x256ピクセルの3次元フロクセルで蚘録されたす。深さが倧幅に䞭断されおいる堎所では、新しいラむトのリストず叀いクラスタヌ化された゜ヌスのリストの䞡方の最小倀が比范され、各タむルのラむトの数が決定されたす。これらは最終的に照明パスで䜿甚されたす。興味深いこずに、芁玠むンデックスは、クラスタヌアプロヌチず同様に、256 x256ピクセルの3次元フロクセルで蚘録されたす。深さが倧幅に䞭断されおいる堎所では、新しいラむトのリストず叀いクラスタヌ化された゜ヌスのリストの䞡方の最小倀が比范され、各タむルのラむトの数が決定されたす。



埓来のラスタヌ化を扱ったこずがない堎合、そのような豊富な説明はあなたには明確ではないかもしれたせん。質問をさらに詳しく知りたい堎合は、そのようなプロセスがどのように機胜するかに぀いおの䞀般的な原則を調べるこずをお勧めしたす。たずえば、Scratchapixelにはトピックの非垞に優れた分析がありたす。



ゲヌムの可芖性を照䌚するために䜿甚されるいわゆる「スコヌプ」も、このシステムによっお砎棄されたす。蚈算スレッドの゜フトりェアラスタヌ化は長いプロセスであるため、占有率が䜎い可胜性が非垞に高く、フレヌムをいく぀か远加しおもパフォヌマンスにほずんど圱響したせん。これを念頭に眮くず、光は非同期にキャストされる可胜性が高く、パフォヌマンスぞの正味の圱響は最小限に抑えられたす。



画面スペヌスで呚囲光を遮断する



呚囲のオクルヌゞョンは、かなり暙準的な方法で半分の解像床で蚈算されたす。最初に、半球の各ピクセルの䜍眮から16個のランダムな光線が攟射され、次にゞオメトリず亀差する光線が深床バッファヌを䜿甚しお決定されたす。ゞオメトリを通過する光線が倚いほど、障害物は倧きくなりたす。この手法はScreenSpace Directional OcclusionSSDOず呌ばれ、YuriyO'Donnellによる詳现な説明はここにありたす。埓来の単䞀チャネルテクスチャでのオクルヌゞョン倀の保存の代わりに、方向性オクルヌゞョンは3コンポヌネントテクスチャで保存され、結果のオクルヌゞョンは、ピクセル法線䞊のドット積を介しお定矩されたす。



蚈算は半分の解像床で行われるため、結果はかなりノむズが倚くなりたす。デプスバッファヌで品質を高めるために、䞡面ブラヌが適甚されたす。通垞、呚囲光の遮断は䜎呚波数で発生するため、がやけは通垞目立ちたせん。







䞍透明な盎線通路



この節では、芁玠の倚くが最終的に適切な䜍眮に配眮されたす。 Doom 2016ずは異なり、ここのすべおは、いく぀かの巚倧なメガシェヌダヌを介しお盎接レンダリングされたす。ゲヌム党䜓で玄500のプロセッサ状態ず12の蚘述子レむアりトがあるず思われたす。プレむダヌの歊噚が最初にレンダリングされ、次に動的オブゞェクト、次に静的オブゞェクトがレンダリングされたす。深床プリパスのおかげですでに深床バッファを受け取っおおり、事前に深床に察応しないピクセルを陀倖できるため、順序は特に重芁ではないこずに泚意しおください。





プレむダヌの歊噚





動的オブゞェクト





静的オブゞェクトの最初のセット静的オブゞェクトの





2番目のセット



ほずんどのAAAゲヌム゚ンゞンでは、シェヌダヌグラフず静的シェヌダヌ機胜により、開発者はあらゆる皮類のマテリアルずサヌフェスでクリ゚むティブになり、各マテリアル、各サヌフェスは独自のシェヌダヌに぀ながりたす。その結果、゚ンゞン機胜のすべおの可胜な組み合わせに察しお、信じられないほど倚様なシェヌダヌの䞊べ替えに盎面しおいたす。ただし、id Techは他のAAAプロゞェクトずは倧きく異なりたす。ほずんどすべおの玠材ず機胜を、ほんの数個の巚倧なメガシェヌダヌに組み合わせおいたす。このアプロヌチにより、GPUはゞオメトリをより緊密に組み合わせるこずができ、パフォヌマンスにプラスの効果がありたす。これに぀いおは埌で説明したす。



バむンドされおいないリ゜ヌス



グラフィックを圢成するプロセス党䜓に「無関係なリ゜ヌス」の抂念が含たれおいるこずは泚目に倀したす。これは、各描画呌び出しの前にブラヌ、反射、テクスチャの粗さをリンクする代わりに、シヌン内のテクスチャのリスト党䜓が䞀床にリンクされるこずを意味したす。リストのテクスチャは、定数によっおシェヌダヌに枡されるむンデックスを介しおシェヌダヌで動的にアクセスされたす。したがっお、drawを呌び出すこずで、任意のテクスチャを取埗できたす。これにより、倚くの最適化ぞの道が開かれたす。その1぀に぀いお次に説明したす。







ドロヌコヌルを動的にマヌゞする



完党に分離されたリ゜ヌスアヌキテクチャに加えお、すべおのゞオメトリデヌタが1぀の倧きなバッファから割り圓おられたす。このバッファは、ゞオメトリ党䜓のオフセットを栌玍するだけです。



ここで、idTech 7の最も興味深いテクノロゞヌ、぀たり描画呌び出しの動的なマヌゞが圹立ちたす。..。これは、分離されたリ゜ヌスアヌキテクチャず䞀般化された頂点メモリに䟝存しおいるため、描画呌び出しの数ずプロセッサ時間が倧幅に削枛されたす。レンダリングを開始する前に、蚈算シェヌダヌは「間接」むンデックスバッファヌを動的に䜜成しお、無関係なメッシュのゞオメトリを1぀の間接描画呌び出しに効率的にマヌゞしたす。コヌルマヌゞは、材料特性が䞀臎しないゞオメトリで機胜するため、無関係のリ゜ヌスがないず機胜したせん。将来的には、深床プリパスず照明プリパスの䞡方で、動的むンデックスバッファを再び䜿甚できるようになりたす。



反射



最も䞀般的な蚈算シェヌダヌは、レむマヌチングアルゎリズムを䜿甚しお画面空間の反射を䜜成したす。このアルゎリズムは、反射面の粗さに応じお、ピクセルから反射に向かっおワヌルド空間に光線を攟出したす。同じこずがDoom2016の堎合にも圓おはたり、フォワヌドパスの䞀郚ずしお小さなGバッファヌが蚘録されたした。ただし、Doom EternalにはGバッファヌがなくなり、画面スペヌスの反射でさえ、蚈算シェヌダヌで個別に蚈算されるのではなく、盎接シェヌダヌですぐに蚈算されたす。ピクセルシェヌダヌのこのような偏差がパフォヌマンスにどのように圱響するかを知るこずは興味深いこずです。レゞスタの負荷が増える代わりに、開発者はレンダリングタヌゲットの数を枛らし、その結果、メモリ垯域幅の負荷を枛らしようずしおいたようです。



倚くの堎合、画面スペヌスのテクスチャに必芁な情報が含たれおいない堎合、察応する゚フェクトにレンダリングアヌティファクトが衚瀺されたす。これは、目に芋えない反射オブゞェクトを反射できない堎合の画面空間の反射で最もよく芋られたす。この問題は通垞、静的反射キュヌブマップをバックアップずしお䜿甚する埓来のアプロヌチで解決されたす。







ただし、Doom Eternalではメガテクスチャが䜿甚されなくなったため、フォヌルバックテクスチャも必芁ありたせん。



粒子



シミュレヌション



Doom Eternalでは、衝突をシミュレヌトするための深床バッファヌなど、䞀郚のパヌティクルシステムが画面スペヌス情報に䟝存しおいるため、パヌティクルプロセッサシミュレヌションの䞀郚は蚈算シェヌダヌの肩にかかっおいたす。他の粒子システムをフレヌム内で䞀床に実行しお非同期で蚈算できるのに察し、このようなシミュレヌションには予備的な深床プリパスデヌタが必芁です。特城的なのは、粒子の埓来のシェヌダヌシミュレヌションずは異なり、ここでは、蚈算シェヌダヌに栌玍されおいるバッファヌから䞀連の「コマンド」を実行するこずでシミュレヌションを実行したす。各シェヌダヌスレッドはすべおのコマンドを実行したすが、その䞭には、いく぀かのkill、emit、たたはparticleパラメヌタヌの倉曎がありたす。これはすべお、シェヌダヌで蚘述された仮想マシンのように芋えたす。そのようなシミュレヌションの耇雑さに぀いおはよくわかりたせんが、アプロヌチはSiggraph2017でのBrandonWhitneyの「TheDestinyParticleArchitecture」プレれンテヌションで。プレれンテヌションの方法は、䞊蚘で説明した方法ず非垞によく䌌おおり、他の倚くのゲヌムで䜿甚されおいたす。たずえば、ナむアガラ粒子シミュレヌションシステムはUnreal Engine4でも同様に機胜するず確信しおいたす。



点灯



Doom2016およびSiggraph2016で説明されおいる方法ず同様に、照明粒子の解像床は実際の画面解像床から切り離されおおり、開発者は品質、画面サむズ、および盎接制埡に基づいお各粒子システムの解像床を制埡できたす。䜎呚波効果の堎合、たずえば高解像床を必芁ずする火花ず比范しお、品質をほずんど損なうこずなく、はるかに䜎い解像床で照明を提䟛できたす。照明ず光の䞻方向は、2048 x 2048ピクセルの2぀のアトラスに保存されたす。どちらも、他のテクスチャず同様に、バむンドされおいないリ゜ヌスを通過するたびに䜿甚できたす。さらに、粒子をレンダリングするために、これらのアトラスのサンプリングを通じお単玔なゞオメトリが描画されたす。





照明アトラスの拡倧された断片。



空ず散乱



次に、䜓積照明に぀いお説明したす。その生成は4぀のパスで構成され、空自䜓を光源に向かっおレむマヌチングするこずにより、空の雰囲気の3DLUTテクスチャを䜜成するこずから始たりたす。







最初から、テクスチャが画像にどのように衚瀺されおいるかを正確に理解できない堎合がありたすが、90床回転させお氎平に䌞ばすず、すべおが明確になりたす。倧気が散乱したす。氎平方向よりも垂盎方向の方が倉動しやすいため、垂盎方向の解像床が高くなりたす。倧気は球で衚されるため、氎平回転は通垞経床ず呌ばれ、垂盎回転は通垞緯床ず呌ばれたす。倧気散乱は半球によっお蚈算され、球の䞊郚の経床360床ず緯床180床をカバヌしたす。芳察者たでのさたざたな距離をカバヌするために、LUTテクスチャには32の深床セグメントが含たれ、各フレヌムの空のデヌタを再蚈算する代わりに、プロセスは32フレヌムに分散されたす。







LUTテクスチャのおかげで、次のパスは、芳枬された「フロクセル」による光散乱を、より小さなスケヌルでの光のクラスタヌ障害物ずの類掚によっお蚈算したす。䞋の近くから遠くたで、いく぀かのセグメントを芳察できたす。







3番目のパスでは、各セルの散乱デヌタがビュヌに向かっお埌続の各セルに乗算され、新しい3Dテクスチャに曞き蟌たれたす。



その結果、ピクセルの深さに基づいお新しく生成された3Dテクスチャをサンプリングするこずにより、レンダリングされた画像の䞊にボリュヌム照明が配眮されたす。





ビフォヌ





アフタヌ



最埌の「目に芋える」空は、ビュヌ内にある堎合は半球にレンダリングされたす。このシヌンでは、空はレビュヌに含たれおいたせんでしたが、以䞋では、屋倖シヌンで空をレンダリングする䟋を芋るこずができたす。







透明性



Doom 2016ず同様に、光散乱デヌタがある堎合、透明床は䞍透明なゞオメトリの埌のフォワヌドパスによっおレンダリングされたす。この堎合のシヌンテクスチャは解像床が䜎䞋しダりンサンプル、衚面の滑らかさに基づいお透明床を「シミュレヌト」するために、適切なミップレベルが遞択されたす。光散乱デヌタは、衚面の内偎から芖芚的に良奜な散乱を䜜成するのに圹立ちたす。



以䞋に、シヌンからのテクスチャミップチェヌンの䟋を瀺したす。ここでは、より透明なサヌフェスがビュヌポヌトに分類されたす。





透明性のために、それに関連するピクセルのみが解像床で倱われたす。



ナヌザヌむンタヌフェヌス



通垞、フレヌムの最埌のパスはナヌザヌむンタヌフェむスです。通垞の堎合ず同様に、むンタヌフェむスはセカンダリフル解像床LDR8ビットレンダリングタヌゲットにレンダリングされ、色はアルファチャネルによっお事前に乗算されたす。トヌンマッピング䞭に、むンタヌフェむスがHDRテクスチャに重ね合わされたす。フレヌム内の残りのHDRコンテンツでむンタヌフェむスを機胜させるのは通垞泚意が必芁ですが、Doom Eternalでは、トヌンマッピングがむンタヌフェむスを魔法のようにスケヌリングし、他の3Dコンテンツに察しお自然に芋えたす。







埌凊理



埌凊理で最初に行うこずはがかしです。この2パス効果は、カラヌテクスチャずカスタムスピヌドバッファからデヌタを読み取りたす。最初のパスは垂盎軞に4぀のサンプルを収集し、2番目のパスは氎平軞に沿っお4぀のサンプルを収集したす。次に、ピクセルの動きに応じお色芋本がブレンドされたす。がやけを避けるために、カスタムスピヌドバッファヌはゎヌストがないこずず、プレむダヌの歊噚がプロセスから陀倖されおいるこずを確認する必芁がありたす。



次は目暙ずする圱響ですこのRGバむカラヌ1 x 1テクスチャには、シヌン党䜓の平均照明が含たれ、カラヌテクスチャを連続的にダりンサンプリングし、ピクセルグルヌプの平均照明を取埗するこずによっお蚈算されたす。ほずんどの堎合、この手法は、呚囲の明るさの急激な倉化に察する人間の目の習慣をシミュレヌトするために䜿甚されたす。たた、トヌンマッピング䞭の圱響を蚈算するずきに、平均照明が䜿甚されたす。







この埌、ブルヌムが蚈算されたす。この効果はこの䟋では十分ではなく、広くレンダリングするこずはできたせんが、䞀定の限界を超えるカラヌデヌタを取埗し、テクスチャ解像床を埐々に䞋げおがかしお蚈算するこずを知っおいれば十分です。



次にトヌンマッピングすべおの効果を組み合わせたす。単䞀の蚈算シェヌダヌは次のこずを行いたす。



  • 歪みを適甚したす
  • ブルヌムテクスチャ䞊にレンダリング
  • 振動、カメラの汚れ、色収差、レンズフレアおよびその他の倚くの圱響を蚈算したす
  • 平均照明に基づいお露出倀を取埗したす
  • カスタムトヌンマッピング挔算子を䜿甚しお、トヌンマッピングがLDRずHDRの䞡方の正しい範囲にHDRカラヌを配垃できるようにしたす。


最埌に、むンタヌフェむスが䞊に重ねられたす。歪み



テクスチャは、埌凊理パスの前でもレンダリングされたす。粒子効果による火のかすみのようなゞオメトリは、元の解像床の1/4の圢匏で新しいレンダリングタヌゲットにレンダリングされたす。このレンダリングでは、歪みデヌタは赀ず緑のチャネルに保存され、オクルヌゞョンは青に保存されたす。埗られたデヌタは、トヌンマッピングステップで画像が歪んだずきに適甚されたす。







結論



ドゥヌム゚タヌナルのワンショットの倧たかな内蚳は終わりたしたが、ゲヌムの倖芳に圱響を䞎えるいく぀かのこずには觊れおいないず確信しおいたす。私の意芋では、Doom Eternalは信じられないほどの技術的成功であり、idSoftwareは将来さらにその氎準を匕き䞊げるこずができるでしょう。開発チヌムは、スマヌトな思考ず効果的な蚈画が高品質のゲヌムの䜜成にどのように圹立ったかを私たちに瀺すこずに成功したした。これは優れた圹割モデルであり、教材でもあるず思いたす。idSoftwareによる今埌の展開を楜しみにしおいたす。



それが完了するたで、裂けお匕き裂きたす。



参考資料






All Articles