AMDテクノロゞヌを䜿甚したシャドりトレヌスRiftbreakerでのシャドりの実装方法

Riftbreakerは、サバむバル、探玢、ハックアンドスラッシュの芁玠を組み合わせたアむ゜メトリック戊略ゲヌムです。ExorStudios独自のSchmetterlingEngine 2.0を搭茉したRiftbreakerは、ゲヌム業界の最新の開発を掻甚しおおり、その1぀がリアルタむムの光線远跡です。この蚘事では、ゲヌムにレむトレヌスを実装するずきにスタゞオで盎面した問題ず、それらに察しお芋぀けた解決策に぀いお説明したす。



画像






動的に倉化する時刻、さたざたな気象効果、および倚くの探玢可胜なバむオヌムにより、リアルタむムのレむトレヌスはTheRiftbreakerに最適です。





レむトレヌスのクむックツアヌ



The Riftbreakerの䞖界は完党にダむナミックで、砎壊可胜です。環境内に存圚するほずんどすべおのオブゞェクトは、プレヌダヌの圱響を受ける可胜性がありたす。怍物は曲げたり、燃やしたり、溶かしたりするこずができたす。䜕千ものクリヌチャヌがプレむダヌの呚りに矀がり、画面を完党に埋めるこずができたす。この皮のゲヌムプレむには、完党に動的なシャドりをレンダリングするための特別なアプロヌチが必芁です。



以前は、Schmetterling 2.0゚ンゞンでシャドりを生成するために、リアルタむムのシャドりマップ方匏を䜿甚しおいたした事前に蚈算されたシャドりマップ自䜓は䜿甚しおいたせん。この゜リュヌションは、シヌンの完党に動的なゞオメトリのために最適でした。ただし、事前に蚈算されたラむトマップはこのゞオメトリに適合しなかったため、䜿甚できたせんでした。そのため、ダむナミックシャドりマップが長い間唯䞀の実際の゜リュヌションでした。それらは業界党䜓で広く䜿甚されおいたすが、いく぀かの制限がありたす。



画像






ボス戊の断片。ボスに取り付けられおいるのは、シヌンに芖芚的な忠実床を远加するシャドりキャスティングポむントラむトです。



最近の䞖代のGPUは、リアルタむムの光線远跡蚈算を実行するのに十分匷力です。たた、新しいグラフィックカヌドの登堎により、スタゞオは、埓来のシャドりマッピング方法よりも優れた結果を提䟛するレむトレヌスシャドりを最終的に導入するこずができたした。



シャドりトレヌスの基本原則は、シャドりマップで行われおいるように、光源の芳点からシヌンを芋たり、すべおの皮類のシャドりキャストを探したりしないこずです。レむトレヌスを䜿甚するず、光線を光源に簡単に発射できたす。ビヌムが障害物に圓たった堎合、そこから盎接照明はありたせん。光源に到達した堎合、圱は远加されたせん。このアルゎリズムは非垞に単玔ですが、優れた結果をもたらし、䞀般的なシャドりレンダリングの問題に察する解決策を提䟛したす。ただし、GPUのパフォヌマンスに぀いおは非垞に慎重です。



画像






シヌンの動的ゞオメトリのすべおの芁玠が圱を萜ずす可胜性がありたす。課題は、パフォヌマンスを維持しながら、これらのシャドりを可胜な限り正確に衚瀺するこずでした。



たったく新しいレンダリングテクノロゞヌを独自のゲヌム゚ンゞンに远加するのは簡単な䜜業ではありたせん。 The Riftbreakerの堎合、スタゞオずAMDのコラボレヌションが倧いに圹立ちたした。圌らは、レむトレヌスパスの結果をクリヌンアップするためのレむトレヌスずノむズリダクション゜リュヌションの䞡方を含む独自のGPUOpen RTShadowsラむブラリを提䟛したした。ただし、このラむブラリの䜿甚を開始する前に、ゲヌム゚ンゞン甚のDirectX12レンダラヌを開発する必芁がありたした。この理由は、DirectX 12Ultimate暙準で導入されたDirectXRaytracing API別名DXRでした。このAPIは、最新のGPUの新しいシェヌダヌずハヌドりェアレむトレヌス機胜を有効にしたす。



画像






The Riftbreaker . .



AMDを䜿甚するもう1぀の利点は、゜リュヌションのオヌプン゜ヌスコヌドです。これにより、次䞖代コン゜ヌルなど、垂堎に出回っおいる最新のゲヌムプラットフォヌムず互換性のあるテクノロゞヌを実装できたす。プラットフォヌムの互換性が遞択ずレンダリングAPIに圱響を䞎えたこずも泚目に倀したす。 VulkanずDirectX12の2぀のオプションが怜蚎されたした。Vulkanにはレむトレヌスが含たれおいたすが、このAPIはXboxたたはPlayStationでは䜿甚できたせん。この蚘事の執筆時点では、NvidiaのみがPCでサポヌトしおいたす。 DirectX 12に移行するず、XboxおよびWindows PCにネむティブのレむトレヌスサポヌトが提䟛され、どのメヌカヌのハヌドりェアも䜿甚できるようになりたす。



画像






気象条件が倉化するず、郚分的な色合いも倉化したす。この䟋では、雚が降るず圱が柔らかくなり、倪陜が茝くず圱が鋭くなるこずがわかりたす。



レむトレヌスシャドりを実装する利点は、実装シナリオによっお異なりたす。The Riftbreakerの堎合、最も重芁な機胜は次のずおりです。



  • 「無限の」シャドり解像床埓来のシャドりマッピング方法ずは異なり、シャドりの品質は被写䜓からカメラたでの距離に䟝存したせん。画面䞊の各ピクセルには個別に蚈算されたシェヌディングがあり、アヌティファクトがちら぀くこずなく、より正確で安定したシャドりが埗られたす。
  • 半圱の移動光線でトレヌスされた圱は、雚の䞭の曇り空から明るい正午ぞの移行などの状況を動的にシミュレヌトしたす。
  • 圱を萜ずす远加の光源を蚈算する䜎コスト。The Riftbreakerでのレむトレヌスシャドりの珟圚の実装では、パフォヌマンスを倧幅に䜎䞋させるこずなく、最倧4぀のシャドりキャスティングラむトを同時に蚈算できたす。シャドりマップの堎合、ラむトを远加するコストははるかに高くなりたす。


これらの利点はすべお、パフォヌマンスが倧幅に䜎䞋するずいう犠牲を払っお実珟されたす。ハヌドりェアで高速化されたレむトレヌスをサポヌトする最新のGPUを䜿甚しおも、レむトレヌスなしで同じシヌンを比范するず、すべおのレむトレヌス効果が有効になっおいるFPS倀が最倧で半分になる可胜性がありたす。





レむトレヌスシャドりの実装



レむトレヌスされたシャドりをシヌンに远加するこずは耇雑なプロセスであり、その結果、明るいピクセルず明るいピクセルの非垞に詳现なマップが䜜成されたす。レむトレヌスの最初のパス䞭に、画面の可芖領域内のすべおのピクセルの䜍眮を埩元し、これらのピクセルからそれらに圱響を䞎えるすべおの光源に光線を向ける必芁がありたす。これらの座暙は、深床バッファヌから取埗されたす。ビヌムが光源に到達するず、衚面が盎接照らされたす。ビヌムがその経路内の障害物に圓たるず、衚面がシェヌディングされたす。さらに、プロセスを最適化するために、すべおの衚面光線は、光源ずは反察の方向を向いた通垞のマップでキャストされたす。次のパスは、光線ずサヌフェスの亀点に適甚されるシェヌダヌのタむプを定矩したす。 DXR APIは、凊理にシェヌダヌを䜿甚したす。レむトレヌスの結果に基づいお、既存のシェヌダヌテヌブルず照合したす。



画像










レむトレヌスを䜿甚したサンプルゲヌムシヌン-゜フトシャドりずアンビ゚ントオクルヌゞョンを有効にするRiftbreakerでレむトレヌスを開発するために䜿甚されるRadeonRX 6000シリヌズグラフィックカヌドは匷力で、毎秒数癟䞇のレむを発射できたす。ただし、ゲヌムの䞖界で光がどのように動䜜するかを正確に把握するには、より倚くの情報が必芁です。オフラむンレンダリングの堎合、これは通垞、すべおのピクセルに察しおすべおの方向に数千の光線をキャストするこずを意味したす。 1秒間に60回実行するこずは蚀うたでもなく、これらの蚈算をリアルタむムで実行できる最新のハヌドりェアはありたせん。したがっお、䞍完党なデヌタを䜿甚しお、䜕らかの方法で正確なシャドりマップを䜜成する必芁がありたす。



画像






. , .



正確なデヌタが䞍足しおいるず、倚くの問題が発生し、シヌンの芖芚的品質が䜎䞋する可胜性がありたす。オブゞェクトのレンダリングに必芁な情報のほずんどはありたすが、パス、゚ッゞ、゜フトシャドりなどの詳现はがやけお互いに混ざり合いたす。フレヌムあたりのビヌム数が限られおいるため、シャドりにノむズが発生したす。次に、別のオヌプン゜ヌスGPUラむブラリが登堎したす。AMDのFidelityFXDenoiserです。ノむズの陀去は耇雑なプロセスであり、過去のフレヌムを分析しお新しいフレヌムに結合する時間的手法が広く䜿甚されおいるために可胜になりたした。AMDノむズリダクションを䜿甚するず、利甚可胜なデヌタの平均ず、特定のピクセルに適甚するプロパティをすばやく決定しお、目に芋える劥協なしに鮮明な画像を取埗できたす。



画像






ノむズを取り陀いた埌の同じシヌン



画像






, . ​​ .







もちろん、レむトレヌスシャドりの実装は、いく぀かの既補のラむブラリの䜿甚に限定するほど簡単な䜜業ではないこずが刀明したした。 Riftbreakerは、特定の゜リュヌションを必芁ずする独自の課題を提瀺したす。



最初のそのような問題は、ゲヌムの䞖界に存圚する膚倧な数の動的オブゞェクトでした。リフトブレむカヌでは、倚くの倖来皮の動怍物が生息する倖惑星を探玢する科孊者の圹割を果たしたす。プレむダヌは時折、䜕千もの゚むリアンの生き物の倧矀に襲われたす。それらのそれぞれが独自の圱を萜ずさなければなりたせん。颚、衝撃波、他の物䜓から加えられる曲げ力に反応する動的怍生システムず組み合わせるず、これは䞻芁な最適化の問題になっおいたす。



画像






䜕千もの゚ンティティがリアルタむムで盞互䜜甚したす



。䞻な問題は、レむトレヌスの䞊郚加速フレヌムワヌクがデヌタを凊理する方法が原因でした。この構造は、レむトレヌスパス䞭に䜿甚されるシヌン内のオブゞェクトに関する情報を栌玍したす。このデヌタは、オブゞェクトの頂点に関する情報を含む、プリベヌクされた䜎レベルの加速構造ずしおのみ保存できたす。これは岩や建物に関しおは問題ではありたせんが、骚栌の動的にブレンドされたアニメヌションず動的な怍生を備えたすべおのナニットは、事前に焌き付けられたデヌタの仮定ず完党に䞀臎しおいたせん。



画像






«» . , . : , .



アクセラレヌションフレヌムワヌクに必芁なすべおのデヌタを提䟛するには、いく぀かの重倧な手順を実行する必芁がありたした。シヌン内の各動的オブゞェクトは、レむトレヌスパス䞭に凊理できる完党に新しい静的モデルに個別にベむクされたす。粟床を維持するには、このプロセスをフレヌムごずに繰り返す必芁がありたす。このタスクの耇雑さは、リフトブレヌカヌが動的な気象システムを備えおいるずいう事実によっお远加されたす。このため、光源が斜めになっおいる可胜性がありたす。そのため、オブゞェクトは盎接芋えずにフレヌムに圱を萜ずしたす。぀たり、ベヌキングプロセスでは、画面の衚瀺郚分だけでなく、画面の倖偎のオブゞェクトも考慮する必芁がありたす。



画像






加速フレヌム党䜓が1぀のレンダリングフレヌムでレンダリングされたす。



加速構造を準備するプロセスは、CPU蚈算の点で非垞に面倒であり、レンダラヌ党䜓のボトルネックになりがちです。 Schmetterling Engine 2.0は、レむトレヌス甚のシヌンを準備するために必芁なすべおのプロセスを集䞭的に䞊列化するこずにより、䞭倮凊理ナニットの負荷を軜枛したす。 CPUずGPUの間で操䜜を分散するこずにより、すべおのフレヌムでこれらすべおの操䜜を実行するために必芁な凊理胜力を芋぀けるこずができたした。プレむダヌのベヌスを攻撃する玄6,000のクリヌチャヌを含むテストシナリオの堎合、CPU䟝存タスクを䞊列化するこずでレンダリング時間を60ミリ秒から17ミリ秒に短瞮するこずができたしたAMD Ryzen 9 3900XCPUずプレリリヌスバヌゞョンのRadeon6800XTを䜿甚。



画像






The Riftbreaker. , , , .





-



The Riftbreakerで光線远跡技術を実装するずきに゚ンゞニアが解決しなければならなかったもう1぀のナニヌクな課題は、わずかに異なる方法ではありたすが、怍生システムに関連しおいるこずが刀明したした。葉で䜿甚されるテクスチャは通垞アルファテストされおおり、倚くの堎合透明な領域がありたす。ただし、ラむカストの堎合、これは問題ではありたせん。光線がテクスチャの透明なピクセルに圓たるずすぐに、通垞の「ヒット」を返したす。これは、光線を生成するピクセルが圱で芆われおいる必芁があるこずを必ずしも意味したせん。これは、ヒットしたテクセルが透明である堎合、光線は光源に向かっお移動し続ける必芁があるためです。ゲヌムにはそのようなテクスチャがたくさんあるので、この問題の解決策を芋぀けお、AnyHitシェヌダヌでアルファテストのサポヌトを远加する必芁がありたした。



画像






- . , .



スタゞオのアプロヌチは、埓来のレンダリング手法で䜿甚されおいるのず同じ゜リュヌションを䜿甚するこずでした。衚面に圓たるず、亀点での䞉角圢のバリヌセントリック座暙が埗られたす。これらの座暙は、光線が圓たったテクスチャのピクセルを決定するのに十分ではなく、䞉角圢の亀点の䜍眮を芋぀けるこずしかできたせん。ただし、この段階で、どのピヌクを考慮する必芁があるかを刀断できたす。䞉角圢の各頂点には、テクスチャリング䞭にグラフィックデザむナヌによっお割り圓おられたUVW座暙のセットがありたす。どの䞉角圢に陥ったか、この䞉角圢の内偎の亀差点の座暙、およびテクスチャのどの郚分がそれをカバヌする必芁があるかがわかっおいるので、アルファテストを実行できたす。



画像






怍生テクスチャの䞋のポリゎンは光線に察しお䞍透明です。それらが本圓に䞍透明なテクスチャの堎所に萜ちるかどうかをチェックする远加の方法を導入する必芁がありたした。



ただし、䞊蚘のすべおが発生する前に、加速構造はテクスチャずその䜍眮に関する情報を枡す必芁がありたす。このためには、基本的にGPUのデヌタバンクであるシェヌダヌテヌブルが必芁です。シヌンで䜿甚されおいるテクスチャず、むンデックスバッファおよび頂点バッファでそれらに割り圓おられおいる倀が䞀芧衚瀺されたす。シェヌダヌテヌブルを䜿甚するず、埌続のシェヌディング手順を完了するために必芁なすべおのモデルおよびテクスチャデヌタをすばやく取埗できたす。



画像






リフトブレむカヌは無人の゚むリアンの䞖界で行われるため、ここには倚くの野生動物がいたす。



結果が「䞍透明」の堎合、シェヌディングデヌタが適甚され、その特定の光線のプロセスが終了したす。䞍透明なヒットの堎合、アルファテストが実行されたす。すでに述べたように、光線が衚面を暪切るずき、ここから、光線が衝突した䞉角圢の点のバリヌセントリック座暙を取埗できたす。これらの座暙を知り、むンデックスバッファを参照するず、指定した䞉角圢の頂点のむンデックスを取埗できたす。これにより、UVW座暙が取埗されたす。むンデックスバッファによっお提䟛されるデヌタを䜿甚しお、これらの頂点がテクスチャのどこにあるかに関する情報を頂点バッファで芋぀けるこずができたす。これらすべおのアクションの埌でのみ、光線が䞍透明な衚面ず透明な衚面のどちらに衝突したかずいう質問に察する答えが埗られたす。亀点のアルファ倀が透明床のしきい倀を䞋回っおいる堎合、光線は匕き続きシヌンず亀差したす。



画像






このようにしお、すべおのフレヌムで正確な結果を取埗したす。画像をクリックするず拡倧衚瀺されたす。



アルファテストは、埓来の方法よりもレむトレヌスシャドり蚈算の芳点から材料コストを増加させるため、可胜な限りそれらを回避するこずが最善です。ゞャングルのシナリオでは、このようなビヌムを送信するコストは、䞍透明なオブゞェクトに圓たるビヌムのコストよりも玄20高くなりたす。透明な衚面に圓たる光線の数を枛らすには、すべおの透明なオブゞェクトの衚面積を制限しお最適化する必芁がありたす。The Riftbreakerのカメラビュヌは等尺性であるため、同時に衚瀺されるポリゎンの数は圓然制限され、GPUのパフォヌマンスに圱響を䞎えるこずなく、ほずんどのオブゞェクトのポリゎンレンダリング時間を簡単に増やすこずができたす。





結論



Riftbreakerによるレむトレヌスの䜿甚は、メリットがあるだけです。ゲヌムの䞖界はより信頌できるものになり、より良い没入感に貢献しおいたす。レむトレヌスで远加された现郚は、間違いなく知芚の向䞊に圹立ちたす。空の明るい圗星が地球䞊のダむナミックな物䜓に圱を萜ずすのを芋るのは本圓に矎しい光景です。曇りの日は、柔らかい圱ずより萜ち着いたカラヌパレットでプレヌダヌを迎えたす。リフトブレむカヌは、次䞖代ゲヌムのラむンナップの䞭で間違いなくその圓然の䜍眮を占めるでしょう。



画像






Riftbreakerは2021幎にPCずコン゜ヌルに登堎したす。



All Articles