超雑訳 Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields

こんにちわ,Pocolです。
今回は,Majercikらによる”Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”を読んでみようと思います。
論文はhttp://jcgt.org/published/0008/02/01/からダウンロードできます。
毎度のことながら,誤字・誤訳等があると思いますので,ご指摘いただける場合は正しい翻訳例と共に指摘して頂けると幸いです。

Abstract

動的なオブジェクトや照明を用いたシーンにおいて、グローバルイルミネーションを効率的に計算する方法を示します。従来の放射照度プローブを拡張し、シーン内の全放射照度フィールドのコンパクトなエンコーディングを実現します。まず、効率的なGPUメモリレイアウト、幾何学的レイトレーシング、適切なサンプリングレートを使用して、ダウンサンプリングやフィルタリングを行わずに、ひどく大きな球状テクスチャを使用せずに動的な放射照度フィールドを計算します。第二に、新しい可視性を考慮したモーメントベースの補間を用いて、ロバストなフィルタリングされた照度クエリを考案します。性能と精度のトレードオフを実験的に検証し、我々の手法である動的拡散大域照明(DDGI)が、幾何学的・放射学的複雑度の異なるシーンをロバストに照明することを示します(図1)。完全性のために、我々は、動的ライトフィールド全体をサンプリングするための最新の光沢のあるレイトレーシング項を用いて結果を実証し、参考のGLSLコードを同封します。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。

1. Introduction

プローブベースのグローバルイルミネーション
正確なグローバルイルミネーション(GI)効果を使用して画像を合成することは、コンピューター生成される画像の信頼性に大きく貢献します。 物理ベースのGI定式化を正確に解決することは長年の研究分野であり、オフライン数値ソルバーを使用してこれを行うには、依然として時間のかかるコストがかかります。インタラクティブなレンダリングのコンテキストでは、説得力のあるリアルタイム GI エフェクトを生成するために多くの作業が行われており、精度、柔軟性、パフォーマンスの間の特定のトレードオフを持つ多くの異なるソリューションにつながっています。

 ライトフィールドプローブに関する最近の研究は、そのようなトレードオフの1つです。 その表現は、シーンに静的に配置された事前計算済みプローブの特殊なエンコーディングを使用して、シーンの静的なローカルライトフィールドをエンコードします[McGuireら 2017b]。 プローブ表現には多くの利点があります。その中には、光沢のある間接輸送とほぼスペキュラーに近い間接輸送のためのワールド空間(フィルタリングされた)レイトレーシングを効率的で正確に実行する能力や、より滑らかな間接拡散照明のための光漏れアーティファクトにロバストな放射照度プローブのようなクエリをサポートする能力などがあります。

 ライトフィールドプローブ表現によって公開されるクエリおよびサンプリング操作を考えると、多くのシェーディングアルゴリズムはベースとしてこの表現を使用して実装することが可能で、多くの場合、高いパフォーマンスレートで忠実度の高い画像が生成されます。 標準的なライトプローブの主な特徴は、事前に計算された性質と、シーンで照明をサンプリングする方法にあります。 プローブデータの事前計算にはコストがかかるため、固定された照明と幾何学的条件のみが処理されます。 さらに、放射空間補間と事前フィルタリングされたグロッシーサンプリングスキームにより、拡散および鏡面間接照明のエイリアシングと光漏れが発生する可能性があります。

リアルタイムGI
オフラインレンダリングとは異なり、ビデオゲームなどのリアルタイムアプリケーション向けのグローバルイルミネーションソリューションは、現在、空間角度データ構造から迅速に読み取ることができる照明データに基本的に依存しており、通常、動的な照明のために静的ジオメトリからの低速更新に事前計算または制限されています。 例には、ライトマップ表現、放射照度および放射輝度プローブ、シーンまたは照明情報のボクセル化表現が含まれます。 これらの各表現は、コンパクトさ、実行時の柔軟性、精度、およびコストの間の特定のトレードオフを打ちます。 幾何学的および/または放射測定的に複雑なシーンでは、これらの方法はすべて、アンダーサンプリングと再構成の結果として現れる望ましくないアーティファクトが十分に文書化されています。 これらのアーティファクトの中で最も重要なのは、複雑な可視性の領域での光と影の漏れです。 最近のGDCとSIGGRAPHの多くの講演では、これらの問題を分離して議論しています。 2つの代表的なものを図2に示します。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。

通常、ヒューリスティックな回避策が使用されます。 これらは、特定の制作の技術的および技術的制約によって異なります。 静的なジオメトリおよび/または照明のみが処理される場合、多くの場合、手動で後処理の介入が行われます。 もちろん、このようなアプローチはシーンの複雑さに応じて拡張性が低く、オフラインでかなりの事前計算が必要です。 この問題は、動的な環境のコンテキストではさらに誇張されます。動的な環境では、実行時にシーンのジオメトリと照明が変化する可能性があり、手作業による介入が困難です。 そのため、動的なシーンにロバストであり、事前にキャッシュされたグローバルイルミネーションソリューションの高性能な性質を犠牲にしない自動キャッシュソリューションが必要となります。

 従来の技術の根底にある中心的な問題は、放射輝度(シェーディングの光沢部分に使用される光線に沿った光エネルギー)または放射照度( シェーディングの拡散部分について必要な放射の余弦重み付き積分)の両方をとらえるためにうまく設計されていたり,効率的な表現に固有ではありません。 むしろ、問題は技術に可視性情報が欠けているため、完全なライトフィールドまたは放射照度(オクルージョンを考慮した放射照度)をエンコードできないことです。

 この論文では、従来の放射照度プローブを完全な放射照度フィールドの表現に拡張する方法について説明し、実行時にその表現を効率的に更新する方法を示し、その方法のパフォーマンスと品質を評価します。 計算される量の学術用語は、動的な間接放射フィールドです。 ゲーム業界の専門用語に合わせて、新しいプローブテクニックを動的拡散大域照明(DDGI)と呼びます。

この研究の具体的な貢献は次のとおりです。

  • コンパクトでGPUに合わせたデータレイアウトと計算スケジュールを活用したインクリメンタルなスキームにより、正確で動的なオクルージョン情報を持つ照度プローブを拡張し、収束した「無限」バウンス拡散グローバルイルミネーションを実現しました。
  • 一次可視解像度とフレームレートに依存しないレイトレーシング放射照度プローブのアルゴリズム。高解像度の球形テクスチャのノイズ除去または事前フィルタリングのコストを回避します。
  • 空間補間、オクルージョン、フィルタリングスキームは、時間的に変化するジオメトリと照明を備えたシーンの放射照度クエリに対してより堅牢です。
  • 多くの場合、(オフライン)パストレーシングとほぼ同じ結果を生成するシステムの評価、動的に更新されたオクルージョン認識放射照度とGPUレイトレースされた光沢反射および鏡面反射を組み合わせ、これらの間接的な寄与におけるエイリアシングアーティファクトを低減します。
  • オープンソースのG3D Innovation Engine[McGuire et al. 2017a]と互換性があり,直接取得でき,DDGIを実装するためのオープンソースのリファレンスシェーダー。

2 Related work

インタラクティブなグローバルイルミネーションの作品は数十年にわたります。 私たちは、私たちの仕事に最も関連する分野をレビューします。

イメージベースドライティング
画像ベースの照明方法は、最新のビデオゲームで最もインタラクティブな事前キャッシュ照明ソリューションの基礎を形成しています[MartinとEinarsson 2010; Ritschelら 2009; McAulery 2012; Hooker 2016]。ここで、一般的なワークフローでは、さまざまなタイプのライトプローブをシーンのボリューム内に密に配置します。各プローブは、何らかの形の球面(放射)放射マップをエンコードします。 これらのマップの事前フィルタリングバージョンを保存して、拡散および光沢のあるランタイムシェーディングクエリを高速化することもできます。

 従来のライトプローブの面白い変形例として、デジタルアーティストが手動でボックスや球体のプロキシをシーンに配置することができ、これらのプロキシは、空間的に局在化された反射のバリエーションをよりよく近似する方法で、実行時にプローブのクエリをワープするために使用されます[Lagarade と Zanuttini 2012]。同様に、手動で配置された凸状のプロキシジオメトリセットもまた、実行時に多数のライトプローブ間のクエリと補間を行う際のブレンドウェイトのバインドに使用され、このようなプローブベースの手法の主なアーチファクトの1つであるライトリークアーティファクトを低減するために使用されます。

 これらのプローブおよび画像ベースのライティング技術は、最新のオフラインおよびリアルタイムレンダリングではどこにでも存在しており、興味のある読者は包括的な調査 [Reinhardら2006] を参照してください。

 プロダクション品質のイメージベースドライティングシステムは説得力のある照明効果を生成しますが、実務者は手動のプローブとプロキシの配置を排除することがプロダクションにおける重要な未解決の問題であることはその通りです[Hooker 2016]。現在、手動調整なしでは、明るい部分と暗い部分(つまり、影)の漏れや反射によるアーチファクトの原因となるプローブの配置を自動的に回避することはできません。 これらの問題を回避するために、一部のエンジンは、ピクセル精度の反射をスクリーン空間レイトレーシング[Valient 2013]を代わりに利用しています。 ただし、これらの方法は、反射したオブジェクトがカメラの視点から見えない場合は失敗し、一貫性のない照明とビューに依存した(したがって一時的に不安定な)反射効果につながります。

 ライトフィールドプローブ[McGuireら 2017b]はシーンジオメトリに関する追加情報を球状プローブにエンコードすることにより、静的ジオメトリとライティングを使用したシーンのこれらの問題を自動的に解決します。 動的照明のソリューションは[Silvennoinen と Lehtinen 2017]に提示されていますが、このソリューションは粗い動的オクルーダーのみをサポートし、静的ジオメトリに基づいた複雑なプローブ配置を必要とします。[McGuireら 2017b]の表現の利点を継承しています。 実行時に動的ジオメトリと照明の変動を処理するために根本的に拡張します(5節)。 手動で配置する必要はなく、単純な均一グリッドプローブの配置により、アーティファクトのないレンダリングが実現します。 正確なワールド空間レイトレーシングアルゴリズム(4.2節)のため,反射は、(一貫して)表示されます。 可視性を考慮したブレンドウェイトにより、手動で配置されたプロキシジオメトリを使用せずに、自動フィルタリングされた放射輝度サンプリング(5節)が可能になります。 そのため、ライトフィールドプローブは、従来の(事前フィルター処理された)放射輝度ルックアップのコンテキストと、シェーダー対応のワールド空間レイトレーシングの両方で活用できます。

対話的なレイトレーシングとシェーディング
最近の多くのインタラクティブレンダリングアプローチは、2地点間の可視性クエリを解決する問題を処理し、現在実際に使用されている最新のソリューションを形成しています。 Ritschelら[2008]のインパーフェクトシャドウマップは、シーン内の点から点への可視性の疎な低解像度表現をエンコードし、仮想点光源(例えば,レイトレーサーを用いて生成される)を使用して正確な二次拡散反射と光沢反射を計算するために使用されます。私たちの研究は、ボクセルコーントレーシング[Crassinら]などの別のソリューションによって動機付けられています。高レベルでは、レイトレーシング技術(4.2節)を、シーンの球状ボクセル化表現(従来のボクセルコーントレース用に構築された八分木表現とは対照的に)に対してレイをトレースすると解釈できます。表現の実際の利点の多くに寄与する2つの重要な相違点があります:最初に、ローカルおよびグローバルな可視性の詳細を解決するために暗黙の八分木構造に依存するのではなく、幾何学的シーン情報(すなわち、放射状深度および深度二乗)を明示的にエンコードすることです。第二に、空間パラメータ化もフィルタリングもシーンジオメトリに依存しないこと。これにより、従来のボクセルコーントレースに存在する明るい(および暗い)漏れアーティファクトを完全に回避できます。最後に、メートルスケールで動作するボクセルコーントレーサーとほぼ同じコスト(空間と時間)でセンチメートルスケールのジオメトリを解決できます。

表現
Cigolleらの[2014]球体から単位正方形への八面体マッピングを使用して、球状分布を保存およびクエリします。 このパラメーター化は、たとえばキューブマップよりも分布がわずかに少なく、境界管理が簡単です。 スクリーン空間レイトレーシングだけでなく、ピクセルシェーダーで真のワールド空間レイトレーシングを対象とするため、この手法は、多くの以前のリアルタイム環境マップモンテカルロ積分法の一般化とみなすことができます[StachowiakとUludag 2015; Wyman 2005; Tothら 2015; Jendersieら. 2016].

 また、[Evangelakos 2015]および[Donow 2016]の予備調査により、単一プローブレイトレーシングの精度とマルチプローブトラバーサルの実現可能性を検証することも動機付けられています。 具体的には、単一のプローブで星型トポロジの領域のジオメトリを完全にサンプリングできるため、これらの領域で単一のプローブを使用したレイトレーシングでは、可視性エラー(プローブの方向の離散化によるエラー以外)は発生しません。

3 Dynamic Diffuse Global Illumination Probes: Overview

[McGuireら 2017b]のように、幾何学的および放射分析のシーンデータを、個別のプローブ位置での球状分布にエンコードします。 正確なシェーダーベースのワールド空間レイトレーシング(プローブベースのマーチングアプローチまたはネイティブGPUレイトレーシングAPIのいずれかを使用)を可能にするために,効率的なGPUレイトレーシングと、拡散、光沢、鏡面の間接照明をリアルタイムレートで計算するためにフィルター済み放射照度クエリを組み合わせます 。

  具体的には、球面拡散放射照度(8×8八面体解像度のGL_R11G11B10F形式)、球面距離、および最も近いジオメトリへの2乗距離(両方とも16×16八面体解像度のGL_RG16F形式)をエンコードします。 これらの各平方プローブテクスチャを境界アーティファクト無しでバイリニアー補間を可能するために溝領域の重複を持つ単一の2次元テクスチャアトラスにパックします(図3参照)。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。

 シーンの初期化時にプローブデータを事前に計算する代わりに、プローブを動的に更新して、動的なジオメトリと照明による変化をキャプチャします。 これにより、真にダイナミックで忠実度の高いグローバルイルミネーションを実現できます。 私たちの方法は、[McGuireら 2017b]の高パフォーマンスを維持します; 図4は、完全に収束したマルチバウンスグローバルイルミネーションを計算する能力を示しています。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。

 各フレームで、更新されたレイトレーシングイルミネーションをプローブアトラスに効率的にブレンドできるだけでなく、プローブの深さ情報を補間してシーンジオメトリの変化に適応させることができます。 フォワードシェーディングレンダーパスまたは遅延シェーディングレンダーパスでは、プローブは、事前に計算された標準の環境マップに類似した間接照明バッファとして効果的に処理できます。

 5節で動的グローバルイルミネーションを効率的に計算するために実行時にプローブを使用する方法について説明する前に、4節で動的拡散グローバルイルミネーションプローブ分布を更新する方法について詳しく説明します。

4 Updating Dynamic Diffuse Globa Illumination Probes

[McGuireら 2017b]でのようにプローブコンテンツを段階的に更新する前(4.1節)にプローブを配置します。各フレームで、動的なジオメトリと照明の効果を組み込むために、マルチステッププロセスに従ってプローブ情報を更新します。

  1. シーン内の\(m\)個のアクティブプローブのそれぞれから\(n\)個のプライマリレイを生成およびトレースし、明示的な位置と法線(4.2節)を持つサーフェルというGバッファのような構造に(最大)\(n \times m\)のサーフェスヒットのためのジオメトリを格納します。
  2. 最終画像ピクセル、つまりカメラから直接見えるピクセル(5節)のシェーディングに使用されるのと同じルーチンを使用して、直接および間接照明(4.3節)でサーフェルバッファーをシェーディングします
  3. \(n\)個の交差したサーフェルのそれぞれについて更新されたシェーディング、距離、および平方距離の結果をブレンドすることにより、\(m\)個のアクティブプローブの八面体表現のテクセルを更新します(4.4節)。

 4.2節で、更新するアクティブプローブを選択するいくつかの方法について説明します。 ただし、保守的な選択アプローチを採用し、シーン内のすべてのプローブをアクティブに設定します。 そのため、レンダリングパフォーマンスメトリックは、我々のアルゴリズムの予測されるパフォーマンス上の保守的な上限値になります。

 プローブと交差するサーフェルのシェーディング(4.3節)は、前のフレームからの照明とプローブデータに依存します。これには2つの目的があります: 1つ目は、複数のフレームにわたる複数の間接バウンスの計算コストを償却できること; 次に、ブレンディングアプローチ(4.4節)と組み合わせると、はっきりとした幾何学的不連続性と放射的な不連続性の間のスムーズな移行が可能になります(経時的に)。 もちろん、マイナスの副作用としては、間接照明の更新の待ち時間のために、視認性が劇的に変化するエリアに間接照明が「流れている」ように見えることがあります。 直接照明(フレーム毎に正確に更新する)と比較した間接照明の相対的な滑らかさを考えると、我々は、これらの特定のアーチファクトが視聴者にとって許容可能な知覚的トレードオフのままであることを示す先行研究のガイドラインと観察に従います[2015]。

4.1 Probe Grid Placement

軸が均一な3Dグリッドの頂点にあるシーンのボリュームにプローブを配置します。 軸ごとに2のべき乗の解像度を使用し、プローブのインデックス作成を単純なビット単位の操作に簡素化します。 軸ごとに異なる空間離散化を必要とするシーンに対して、軸ごとのグリッドセル間隔を個別にスケーリングできます。

 可視性を意識したプローブの選択とサンプリングにより、プローブを配置する際に特定の自由度が得られることに注意してください。壁または他のジオメトリ内にあるプローブは、可視性クエリメトリックによって無視されます[2017b]。また、プローブのインデックス作成を簡素化する他の方法では、プローブの生成やシェーディングのどの側面も均一なグリッド配置を必要としません。 実際、プローブは、四面体グリッドなど、他のプローブベースのアルゴリズムで使用されるスキームに従って配置できます。

 空間内のすべてのポイントは、そのポイントを含むグリッドセルの8つの頂点に対応する頂点のケージに関連付けられています。 各部屋のようなスペースに少なくとも1つの頂点のケージができるグリッド解像度とスケールを使用することをお勧めします。 これは、シーン内の各分離/別個の空間内の局所照明変動の十分なサンプリングを保証するために必要となります。 人間スケールのシーンでは、1〜2メートルの間隔で十分であることがわかりましたが、さまざまなグリッド間隔で結果を示しています。

4.2 Generating and Tracing Probe-Update Rays

プローブのテクセルを更新して、動的なジオメトリと照明の変動を考慮し、時間の経過とともに結果をブレンドして、最終的なレンダリング結果に対するこれらの動的な変更の影響をスムーズに説明します。

 \(m\)個のアクティブプローブにおいて,[McGuireら 2017b]のように,確率的に回転したフィボナッチスパイラルパターンに従って、均一に球面方向に\(n\)サンプルします。 次に、これらの方向とプローブ中心の(共有)原点を使用して\(n\)本のレイを生成します。 スレッドコヒーレントな方法で\(m\)個のプローブ全体にレイを配置し、それらすべてを1つのバッチにキャストします。

テクニカルノート
VulkanレイトレーシングおよびDirectXレイトレーシングAPIはプライマリシェーダーからのレイディスパッチを許可しますが、レイバッチ処理のベンチマークを行い、レジスタプレッシャーを最小限に抑え、中間シェーディング結果の検査を通じてデバッグを容易にすることを確認しました。

 いくつかのプローブおよびレイサブサンプリングスキームを試しました。たとえば、カメラの特定の半径内のプローブなど、シーン内のプローブのサブセットのみを更新します。 または、カメラまでの距離に基づいてレイの数を変更します。 これらの適応的スキームは、パフォーマンスの向上を期待する一方で、多くの追加のシーン依存ユーザーパラメーターと追加のやりくりを招きました。

 代わりに、最終結果をシンプルにすることを選択しました。 リファレンス実装は、すべてのフレームですべてのプローブを更新します(つまり、プローブ更新中にすべてのシーンプローブをアクティブに設定します)。また、プローブごとに同じ数のレイをディスパッチします。 大規模なオープンワールド環境などのより複雑な使用シナリオでは、プローブストリーミングスキームといくつかのグリッドスケールで動作するプローブLODの恩恵を受けることができます(詳細については7.1節を参照)。

4.3 Secondary Surfel Shading

プローブの更新と最終レンダリングの両方に統一されたシェーディングモデルを採用しています。 具体的には、実行時に2つのコンテキストでグローバルイルミネーションを計算します。最初は、\(m \times n\)プローブでサンプリングされたサーフェルのシェーディングを更新するとき、最後に、最終出力画像のカメラからピクセルをシェーディングするときです。 これらのコンテキストはどちらも同じシェーディングルーチンを使用しており、最先端のインタラクティブな手法を使用する直接照明パスと、プローブデータを活用する間接照明パスで構成されています。 シェーディングルーチンの詳細については、5節で説明します。プローブサーフェルの更新中のアプリケーションの微妙な違いに注目してください。

 プローブの更新と最終レンダリング中のシェーディングクエリの作成方法の違いを抽象化するために、シェーディングルーチンは、入力としてシェーディング位置、法線、および視線方向を想定しています(5節)。 プローブでトレースされたサーフェルシェーディングの更新では、交差したサーフェルの位置と法線、およびサーフェルからプローブの中心への方向をシェーディングルーチンへの入力として渡します。

4.4 Probe Surfel Updates

サーフェルシェーディングの後、\(m \times n\)サーフェルポイントのそれぞれが更新されたシェーディング値を持ち、サンプリングされたサーフェル距離(および2乗距離)も関連するプローブ中心に対して更新されます。

 (各サーフェルに関連付けられた)プローブテクセルを\(1 – \alpha\)のレートで新しいシェーディング結果にアルファブレンディングすることにより更新します。ここで、\(\alpha\)は更新されたシェーディングが前のフレームからのシェーディング結果をオーバーライドするレートを制御するヒステリシスパラメーターです(式(1))。 すべての結果について、\(\alpha\)を\(0.85\)から\(0.98\)の間に設定します。

\begin{eqnarray}
{\rm newIrradiacne[texelDir]} = {\rm lerp(oldIrradiance[texelDir]}, \\
\sum_{\rm ProbeRays} (\max(0, {\rm texelDir} \cdot {\rm rayDir}) \ast {\rm rayRadiance}), {\rm hysteresis}) \tag{1}
\end{eqnarray}

モーメントベースのフィルター処理されたシャドウクエリを使用してフィルター処理された放射照度を直接計算し、(高解像度)入射放射輝度マップのブルートフォースな事前フィルター処理を回避できるようにします。 この滑らかな入射放射フィールドは、拡散間接照明を計算するために使用され(5.2節)、オプションで、光沢のある鏡面の間接シェーディングの高周波シェーディングマップを維持できます。

テクニカルノート
実行の一貫性を促進するために、意図的にデータをレイアウトし、計算を更新します:プローブテクセルは、隣接する(近くの)ロックステップで動作し、多くの場合、同じレイで動作し、その結果をブレンドします。 これにより、GPUでのコヒーレントメモリフェッチだけでなく、コヒーレントコンピューティングも得られます。 放射照度と深度テクセルをコサインローブ分布に対して更新します。これは、正確な放射照度表現に必要なステップです[Akenine-Mollerら2018]。 深度バッファと深度2乗バッファの場合([McGuireら2017b]のように)、追加の深度先鋭化を使用して、コサインパワーローブ分布に従ってワープします。 コサインパワーローブ分布の閾値(0.001を使用)未満に重み付けされたテクセルは更新しません。

 更新された球面放射照度分布は、ビューに依存しない拡散反射効果をシェーディングするために使用されますが、環境内の動的なジオメトリと照明によるグロッシー/ミラービューに依存するシェーディングを正しく考慮するために更新されることに注意してください。 放射照度とライトプローブを使用した放射照度の計算の詳細な説明については、読者は[Akenine-Mollerら2018](pg.268、490)を参照してください。

5 Shading with Dynamic Diffuse Global Illumination Probes

拡散反射、光沢反射、鏡面反射によるマルチバウンスグローバルイルミネーション効果を計算します。 これらの各トランスポートコンポーネントのシェーディング手順を個別に検討します。 以下に、私たちの手法の新しい貢献の動機と概要を示します。 実装のすべてのアルゴリズムの詳細および/またはパラメータ設定を明示的に詳述する代わりに、正確な技術的詳細の補足参照として完全な参考実装ソースを提供します。

5.1 Direct Illumination

分散シャドウマッピングを備えた遅延レンダラーを使用して、点光源と指向性光源からの直接照明を計算します[Thaler 2011; Donnellyと Lauritzen 2006]。

 間接照明パイプラインを使用して、拡張エリア光源からの直接照明も処理できます。すべての1バウンス間接照明の寄与(5.2節)は、シーン内の直接照明によってシードされた照明の1バウンスを計算します。 間接照明の複数のバウンスは、代わりにシーン内の以前の間接照明のバウンスによってシードされます(5.3節)。 これを念頭に置いて、間接照明シェーディングルーチンにシーン内のエリア照明放射プロファイル(つまり、直接照明プロファイルの代わりに)をシードすることにより、エリア照明から直接照明を計算できます。

 図5の最後の行は、このエリア照明設定の意味を示しています。窓のジオメトリの「直接光」を除いて、バスルームシーンのシェーディングの残りは、窓の光からの「間接」寄与として計算されます。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。

 このアプローチにより、エリアライトからの直接照明の近似を避けることができ、代わりにプローブベースのシェーディングテクニックの堅牢性に依存して、滑らかなエリアシャドウと反射を計算できます。 この方法については、以下で詳しく説明します。

5.2 Diffuse Indirect Illumination

シーン内のシェーディングポイントにおけるプローブからの拡散放射照度をクエリするために基となる可視性を伴った[McGuireら2017b]プローブの重みスキームを拡張し,各プローブにおける球面入射放射照度分布を計算します。 空間的に変化する拡散表面アルベドによって入射放射照度を変調して、間接的な拡散拡散放射輝度の1バウンスを計算します[Akenine-Mollerら2018]。

 プローブ位置での入射拡散放射照度がシェーディングポイント周辺の局所オクルージョンを考慮しないという事実を補正するために、スクリーン空間アンビエントオクルージョンの異形によって(オプションで)出射拡散反射を変調します[ShanmugamとArikan 2007]。 ただし、サーフェルシェーディングの更新を計算するときにこのローカルオクルージョンを含めないことに注意してください(4.3節):この項を省略すると、直接見える表面の照明よりも大幅に少ないセカンダリライティングに影響します(つまり、サーフェルシェーディングの拡散反射、光沢反射、または鏡面反射として計算されます) 。

 [McGuireら2017b]と異なる我々の間接拡散補間およびサンプリング手法は、動的なジオメトリと照明に対する堅牢性を高めるために設計されたレイトレーシングおよびシャドウマッピングに関する文献のアイデアを取り入れています。具体的には、シェーディングポイントを含む8プローブケージのインデックスを計算した後、次のように、各放射プローブの位置と方向(シェーディングポイントに対する)から補間重みを計算します(図6を参照):


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。

 図7は、これらの各重み付けステージが最終レンダリングに与える視覚的な影響を示しており、各要素がアーティファクトの除去にどのように寄与し、従来の放射照度プローブレンダリングから始まり、上記の各要素を進行するかを強調しています。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。

  • シェーディングポイントの接線平面より下にあるプローブを背面カリングし、シェーディング法線とプローブ方向の内積がゼロに近づくと滑らかに減少するソフト閾値を使用します。
  • 暗い領域ではないところ(つまり、ライトリーク)における(比較的に)低強度のライティングに対する人間の視覚システムの感度を考慮して,近くに基づいた重みづけを適用します:単調減少曲線プロファイルに従って非常に低い放射値(つまり、反応可能強度の5%未満)の寄与を減らします。
  • 放射輝度クエリを適切にフィルタリングするために、分散シャドウマッピング法で詳しく説明されているように、平均および分散バイアスされたチェビシェフ補間を可視性クエリに適用します(図7を参照)。
  • シェーディング法線とプローブの方向に比例するバイアスに従ってシェーディングポイントをオフセットします。これにより、潜在的なシャドウ化された非シャドウ化の不連続性から遠ざかることにより、可視性ベースの補間ウェイトの堅牢性が向上します。
  • 次に、前述の重み係数とバイアス係数を使用して、シェーディングポイントとプローブの中心間の距離に基づいて標準のトライリニア補間を実行します。

重みを正規化するとき、たとえば、プローブごとの重みがゼロに近づくときの数値の問題を回避するために、これらの各重み項は保守的なイプシロンテストを使用して適切にバインドされます。

 標準の放射照度プローブを使用したシェーディングでは、予想されるように、関連する作業で強調されたアーティファクトと同様の大きな光漏れアーティファクトが発生します(図2を参照)。しかし、最終的なレンダリングはパストレースされたグラウンドトゥルースとより厳密に一致します。 結果のカラーバンディングアーティファクトは、HDRからLDRへのPDF組み込みのPNG形式への変換によるものです。 これらのアーティファクトは表示されません。

テクニカルノート
以前の作業では\(128 \times 128 \times 6\)の高精度キューブマップを使用して深さ情報を保存していましたが、追加の重み付け基準により、数値の問題を発生させることなく\(16 \times 16\)の中精度の深度値に縮小できます。

5.3 Multiple Bounces of Global Illumination

McGuireら[2017b]と同様に、放射バッファに以前の光のバウンスをシードすることにより、間接照明の複数のバウンスをフレーム間で再帰的に計算します。 これは、静的カメラで表示される静的シーンで最も明白な間接バウンスのタイムラグアーティファクトにつながります。これは、主に関心があるユースケースではありません。ビュー、照明、シーンジオメトリが動的である場合 、間接バウンスの遅れは目立ちません。

 固定ビューおよびジオメトリを使用するシナリオが優先される場合、表示前にバウンスごとの結果(最大バウンスバイアスまで)を収集するように、このアプローチを簡単に適合させることができます。 アプローチのパフォーマンス(6節を参照)を考えると、フレーム間での複数のバウンスのコストを償却することはできませんが、インタラクティブなシェーディングレートに到達します。

6 Results

幾何学的複雑さと放射分析的複雑さが混在するシーンでのアプローチのベンチマークを行います。 プローブ数、解像度、ピクセル形式が最終的なレンダリング品質に与える影響を調査します。 また、最終レンダリングの品質をパストレース参照(オフラインで計算)と比較します。

 完全なレンダラーのコンテキストでディフューズGIを表示するために、直接照明、光沢のあるレイトレースリフレクション、シャドウ、トーンマッピング、ブルーム、およびその他の標準レンダリング項で結果を示します。 このパイプラインのコードは、オープンソースのG3Dイノベーションエンジン(https://casual-effects.com/g3d)で入手できます。ここでは、2つのスクリーン解像度のテクスチャから読み取るためG3D::DefaultRendererのパスを使用して拡散および光沢のあるGI項を挿入しました。グロッシーレイトレーシングは標準的な手法[2013]である光沢と距離に基づくバイラテラルブラーパスに続くピクセル単位の単純なブルートフォースミラーレイトレーシングです。
最先端のレイトレースされた光沢のあるアプローチについては、[Schmidら2019]を参照してください。

 レイはクランプされたコサインで畳み込まれるため、ほとんどの場合、2番目にヒットしたサーフェス上の光沢のある反射は区別できません。 すべての図で行ったように、BRDFの光沢のある部分から、2番目にヒットしたサーフェスのマット部分にエネルギーを追加することをお勧めします。これは、今日の実用的なケースをうまく処理し、シェーディングをわずかに高速化します。 ただし、非常に高密度で高解像度のプローブの理論的な場合、この手順は正確さに影響するため、参考実装に無効なコードパスを残しました。

 パフォーマンス統計を報告する際の一貫性を保つために、最終的なレンダリング品質に影響を与えない可能性のある多くのプローブは引き続き更新されるため、すべてのプローブをフレームごとに控えめに更新します(したがって、パフォーマンスコストが発生します)。 これは、特に大きなシーン(図6、8、16など)に当てはまります。 ここでは、多くのプローブがカメラの錐台の外側にあるか、直接(または間接的に)見えるシーンジオメトリに寄与していません。 最適化されたプローブの選択と適応プローブの更新は今後の研究に任せます。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。

6.1 Probe Count and Resolution

図9と10は、プローブの数と解像度が最終レンダリングに与える影響を示しています。 図11は、間接シャドウの特定のケースでのプローブ数の影響を示しています。 プローブはすべて、シーンの境界ボリュームに合わせてスケーリングされた単純な均一な3Dグリッドで初期化されます。 プローブ表示の主な利点の1つであるプローブデータの可視性を意識したサンプリングにより、手動でプローブを配置する必要はありません。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。

 プローブ数はプローブの解像度よりも大きな役割を果たしていると結論付けることができます。低(角度)解像度のプローブを使用したレンダリングは、パストレースされたリファレンスと比較して良好に収束する結果につながりますが、プローブ数/密度が低いと微妙な光漏れアーティファクトにつながる可能性があります。 ただし、これらは適度に選択されたプローブ密度設定で解決されます。

6.2 Ray Tracing Peformance

表1は、さまざまなプローブ密度と光線/プローブを使用した光線キャストのスループットを示しています。 極端な場合を除き、スループットは1.5 GRays /秒を超えています。 表2に、レンダリングパイプライン内でのアルゴリズムの寄与のタイミングを示し、表1の時間のコンテキストを示します。寄与の合計時間は7ミリ秒です。 ただし、実装ではフレームごとにすべてのプローブが更新されるため、プローブの更新コストが高くなることに注意してください。 適応プローブの選択(7.1節)は、この時間を大幅に短縮します。


※表は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。

6.3 Probe Texel Format

図12は、プローブテクセル形式が最終レンダリングの品質に与える影響を示しています。 8ビット整数ピクセル形式を使用すると、16ビット浮動小数点表現において消失するアーティファクトが発生する可能性があります。 実験的に、11ビット浮動小数点表現は精度とストレージのバランスが取れていることがわかります。このビット深度では、16ビット浮動小数点表現の視覚的な忠実度を維持しながら、ストレージを45%削減します。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。

6.4 Quality Comparisons

図13は、\(8 \times 8\)の色解像度および\(16 \times 16\)の深度解像度で\(4 \times 2 \times 4\)のプローブのグリッドを使用して、動的なシーンでパストレースされたリファレンスと本方法を比較します。 私たちの結果は、パストレースされたリファレンスとほとんど区別できず、数桁高速でレンダリングされます。 ドラゴンが光の下を通過するときに、ボックスの壁に赤いドラゴンが反射することによって生じる、微妙な拡散間接照明のバリエーションに注意してください。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。

 図7は、堅牢な拡散間接重み付け方式の個々のコンポーネントがレンダリングに与える影響も示しています。

7 Conclusion and Discussion

動的シーンジオメトリと照明の存在下で、動的拡散大域照明プローブで表されるように、放射フィールドを更新および補間するためのアプローチを提示し、一時的なオクルージョンと照明の変動を堅牢に処理します。 私たちの方法は、光や影の漏れによるアーティファクトに悩まされず、アンダーサンプリングによるエイリアシングを抑制します。 任意のダイナミックシーンで高パフォーマンスの正確な拡散、光沢、鏡面のグローバルイルミネーション効果を計算します。

 これは、部分的には、効率的なデータが詰め込まれたプローブレイアウトによるもので、レイとシェーディングの計算をプローブ間でコヒーレントな方法でディスパッチできるようにします。 オクルージョンを認識する空間放射照度補間スキームは、[McGuireら2017b]によって提示された元のスキームと比較して、滑らかな拡散照明の変動に対してより堅牢です。

 事前計算された照明を活用する従来の前方レンダリングアーキテクチャと据え置きレンダリングアーキテクチャを、GPU対応の最新のレイトレーシングと組み合わせて、これらの両方の有効化テクノロジーの利点を活用する方法を示しました。

 間接拡散シェーディングは、シーン内の放射輝度の空間的および角度的関係についての基本的な仮定に依存しています。 ポイントは相互に見える。 この仮定によって引き起こされる誤差は、プローブ密度が減少するにつれて増加します(図9)。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。

7.1 Future Work

今後の研究の当面の課題として、さらなる調査に値する2つの分野があります:より多くのフォールバック/代替レンダリングパスを含めることと、プローブ更新の適応選択です。

光沢と鏡面の代替えレンダリングパス
光沢と鏡面のすべての輸送は、動的に更新されたプローブを使用してレイをサンプリングすることで計算されます。 このブルートフォースサンプリングソリューションは、パフォーマンスを犠牲にして精度を犠牲にします。 PICA PICAやBattlefield 5エンジンなどの最近のインタラクティブなレイトレーシングの進歩の公開デモと比較すると、光沢のあるスペキュラーシェーディングソリューションはかなり単純です。 これにより、光線をヒューリスティックに短縮し、環境マップ反射にフォールバックし、真のレイトレース反射をスクリーン空間反射近似と組み合わせ、遠方の交差点に低解像度のジオメトリLODを使用することにより、潜在的なパフォーマンスゲインの感覚が得られ, 最初のバウンス直接照明の後の反射シェーダーの簡素化します。

 これらの近似は強力です。異なるシーンのジオメトリとマテリアルに対して堅牢で、エラーの範囲を直接制御できる方法でそれらを組み込むことは、将来の研究の興味深い方向です。

適切なプローブの選択
大規模で複雑なシーンでは、控えめにプローブを選別しても、パフォーマンスが大幅に向上する可能性があります。 現在、各プローブでサンプリングして保存しているシーン深度情報は、より効率的なプローブスケジューリングルーチンに通知するのにすぐに役立ちます(おそらく十分です)。 たとえば、最も遠いサーフェスヒューリスティックを使用して(つまり、すべてのプローブでトレースされたすべてのレイから)アクティブプローブリストからプローブを容易にカリングできます。

謝辞
OptiXの使用に関する貴重なアドバイスをいただいたDylan Lacewell、Keith Morley、およびJames Biglerに感謝します。 初期のライトフィールドプローブコードを提供してくれたMichael Maraに感謝します。 私たちの実装はG3Dイノベーションエンジン上に構築されており、Ichael Mara、Corey Taylor、および他の多くのオープンソースの貢献者からのプラットフォームへの恩恵を受けています。

Index of Supplemental Materials

サプリメンタルマテリアルはhttp://www.jcgt.org/published/0008/02/01/supplement.zipで見つけることができます。
 動画(DynamicLightFieldProbes.mp4)では私たちの方法を検証するための実験を紹介しています。これらには、ダイナミックジオメトリ(図13)、ダイナミックオクルージョン、プローブグリッド摂動に対するロバスト性(図14)、ダイナミックオクルージョンストレステスト(図15)、ダイナミックライティング(図16)が含まれます。
 sampleIrradianceField.pixファイルには、プローブグリッドから放射照度を計算するためのコードが含まれています。他のglslファイルにはヘルパー関数が含まれています。IrradianceFiled.h/.cppファイルには、レイキャストと生成設定の詳細が含まれています。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。


※図は,Zander Majercik, Jean-Philippe Guertin, Derek Nowrouzezahrai, Morgan McGuire, “Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields”, Journal of Computer Graphics Techniques, Vol.8, No.2, 2019 より引用。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください