超雑訳 Real-Time Global Illumination using Precomputed Light Field Probes

こんにちわ、Pocolです。
今回は,McGuireらによる”Real-Time Globa Illumination using Precomputed Light Field Probes”を読んでみようと思います。
論文はhttps://research.nvidia.com/publication/real-time-global-illumination-using-precomputed-light-field-probesのページからダウンロードできます。GLSLコードなどもリンクページからダウンロードできます。
いつもながら,誤字・誤訳等があるかと思いますので,ご指摘いただける場合は正しい翻訳例と共に指摘して頂けると有難いです。
 

Abstract

静的環境からリアルタイムのグローバルイルミネーションを計算するために使用する新しいデータ構造とアルゴリズムを紹介します。 ライトフィールドプローブは、シーンの完全なライトフィールドと内部可視性をエンコードします。 G-バッファにおよび分散シャドウマップに似たテクセルごとの可視性情報を使用して、現在の放射輝度および放射照度プローブ構造を拡張します。 スクリーン空間およびボクセルコーントレース手法のアイデアをこのデータ構造に適用して、ピクセルおよびコンピュートシェーダー内で直接、正確な可視性情報を使用して、ワールド空間光線の放射輝度を効率的にサンプリングします。 これらのプリミティブから、2つのGPUアルゴリズムを設計し、静的オブジェクトと動的オブジェクトの両方に、観測者に依存したグローバルイルミネーションをリアルタイムで効率的に収集します。これらのアルゴリズムは、パフォーマンスと精度の間で異なるトレードオフを行います。 補足のGLSLソースコードが含まれています。

1 Introduction

放射輝度プローブと放射照度プローブは広く採用されており、スクリーン空間レイトレーシングとアンビエントオクルージョンと組み合わせると、今日のほとんどのインタラクティブグラフィックエンジンで現実的なシェーディング効果を近似する核となるため適用されています。

人気と柔軟性にもかかわらず、プローブとスクリーンスペース技術には制限があります。 ライトプローブとプロキシジオメトリの高価な手動配置は、多くの場合、ライトリークとダークリークのアーティファクトと並びの悪い反射効果を減らすために必要です(図13を参照)。 高パフォーマンスのスクリーンスペース技術は、重要な視覚機能を追加し、動的オブジェクトを自然に処理し、最新のGPUに適切にマッピングします(例:高度なコヒーレンステクスチャアクセスの活用);ただし、これらはローカルに表示されるサーフェスに制限されており、ビューに依存するエイリアシングの影響を受ける可能性があります。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

事前計算されたシェーディングの品質と、真のワールド空間レイトレーシングを実行する機能を組み合わせた新しいプローブ表現を提供します。すべては、最新のスクリーン空間レイトレーシングと同様のパフォーマンスを備えています。 そのために、コンパクトなGPUデータ構造に収められたシーンのライトフィールド表現を追加し、エンコードします。

具体的には、我々の技術的貢献は次のとおりです。

  • 可視性を考慮したライトフィールドクエリのために、シーンの放射輝度と幾何情報をエンコードするライトフィールドプローブデータ構造。
  • サーフェイスのパラメーター化を必要としない効率的なライトフィールドプローブ構築アルゴリズム。
  • シェーダーから直接呼び出すことができるライトフィールドプローブを使用したワールド空間レイトレーシングアルゴリズム。
  • 可視性を考慮したサンプリングと補間を備えた事前フィルタリングされた放射輝度(放射照度)マップを拡張し、ライトリークとダークリークを排除します。
  • リアルタイム遅延レンダリングコンテキストでの光輸送シミュレーションアルゴリズムのデモンストレーションと評価。

幸いなことに、導出と最適化のプロセスはやや複雑ですが、最終的な実装は比較的単純であり、実行可能なシェーダーコードが含まれています。最初のイルミネーションアルゴリズムのコード構造は、階層レイマーチャーの上にあるモンテカルロレイトレーサーに似ています。 デジタルコンテンツの作成などのインタラクティブなアプリケーションに適しています。 ランベルシアンBSDFローブからサンプリングされた光線は高い分散を生成する傾向があるため、ローブで事前にフィルタリングされた放射照度マップを使用する2番目の照明アルゴリズムを含めます。 事前フィルタリングされた結果は高速でノイズはありませんが、偏っています。 このアルゴリズムは、ゲームや仮想現実体験などのリアルタイムアプリケーションに適しています。

図1は、拡散反射光と光沢のある間接光、鏡面反射、エリアソースなど、この方法で計算されたグローバルイルミネーションのあるリビングのシーンを示しています。 ライトフィールドプローブの位置と、シーンジオメトリの8面体パラメーター化(ライトフィールドプローブの一部としてエンコード)でワールド空間レイが進むパスを視覚化します:ここでは、レイの方向の見かけの変化が8面体面で発生します。 最初のプローブで可視性を解決できない場合,あるプローブから別のプローブに光線がジャンプします(セクション4を参照)。 2レベルのレイトラバーサル階層を使用します。オレンジ色の線は\(1/16^2\)の解像度でトレースされ、(幾何学的な詳細を示すため)黄色の線分はフル解像度でトレースされます。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

2 Previous Work

ライトフィールド
ライトフィールド(またはプレノプティック関数)は、1930年代初期の物理学の文献で提案されたモデルにまで遡り、環境の自由空間における放射輝度の空間角分布を表します。 グラフィックスでライトフィールドを使用する最初の作品では、ライトスラブの概念を導入し、ライトフィールドの矩形のサブセットをエンコードしました[LevoyとHanrahan 1996; Gortlerら 1996]。このライトスラブは多くの製品やプロダクションに採用されており、スラブ領域を用いてリアルタイムに再構築する方法が存在します。 ただし、我々のものは、正確なオクルージョンを使用して、空間内の任意の点で評価できるライトフィールドパラメーター化をエンコードし、リアルタイムレンダリングに適用する最初の手法です。

イメージベースドライティング
ゲーム用のインタラクティブなグローバルイルミネーションの最新技術は、画像ベースのライティングのバリエーションに大きく依存しています。その多くは、GDCとSIGGRAPHのトークで独占的に文書化されています(例,[MartinとEinarsson 2010; Ritschelら2009; Mickael Gilabert 2012; SebastienとZanuttini 2012; Hooker 2016])。ほとんどの場合、プローブはシーンのボリューム内に密に配置され、それぞれが球面放射輝度マップをエンコードします。 拡散反射と光沢反射を近似するために、追加の事前フィルタリングされた放射輝度マップが保存されることがよくあります。 時々、手動で配置された(アーティストによる)ボックスまたは球プロキシを使用して、ローカル反射の変化をより適切に近似するために、これらのマップへの参照をワープします。 さらに、手動で配置された凸型プロキシジオメトリセットを使用して、反射の参照中に使用されるブレンドウェイトをバインドし、ライトリークを防ぐことができます。

これらの初期作品の包括的な調査、およびその他の高度な画像ベースの照明技術を読者に紹介します[Devevec 2006]。画像ベースの照明技術は、最新のオフラインおよびリアルタイムレンダリングで広く使用されています。

これらのプロダクションレベルのイメージベースドライティングシステムは説得力のある照明効果を生成しますが、実務者は手動のプローブとプロキシの配置が製作における重要な未解決の問題であることに同意します[Hooker 2016]。これらの手動調整なしでは、明暗(つまり、影)の漏れ、および反射の変位は避けられません。 代わりに、一部のアプリケーションは、ピクセル精度の反射をスクリーン空間レイトレーシング[Valient 2014]に頼っています。 ただし、反射したオブジェクトがカメラの視点から見えない場合、これは機能しなくなります。

ライトフィールドプローブは、シーンジオメトリに関する追加情報をエンコードすることにより、これらの問題を自動的に解決します(セクション3)。 手動で配置する必要はなく、すべての結果はプローブの単純な均一なグリッド配置を使用します。反射は、正確なワールド空間レイトレーシングアルゴリズム(セクション4)と可視性を意識した部分に起因するはずの場所に(一貫して)表示されます フィルター処理された放射輝度プローブ(セクション5)をサンプリングする際に、各プローブの幾何学的プロキシを手動で配置する必要なく、ブレンドウェイトが自動的に計算されます。ゲーム用のインタラクティブなグローバルイルミネーションの最新技術は、画像ベースの照明のバリエーションに大きく依存しています。その多くは、GDCとSIGGRAPHのトークで独占的に文書化されています(例,[MartinとEinarsson 2010; Ritschelら2009; Mickael Gilabert 2012; SebastienとZanuttini 2012; Hooker 2016])。ほとんどの場合、プローブはシーンのボリューム内に密に配置され、それぞれが球面放射輝度マップをエンコードします。 拡散反射と光沢反射を近似するために、追加の事前フィルタリングされた放射輝度マップが保存されることがよくあります。 時々、手動で配置された(アーティストによる)ボックスまたは球プロキシを使用して、ローカル反射の変化をより適切に近似するために、これらのマップへのルックアップをワープします。 さらに、手動で配置された凸型プロキシジオメトリセットを使用して、反射のルックアップ中に使用されるブレンドウェイトをバインドし、光漏れを防ぐことができます。

これらの初期作品の包括的な調査、およびその他の高度なイメージベースドライティング技法を読者に紹介します[Devevec 2006]。イメージベースドライティング技法は、最新のオフラインおよびリアルタイムレンダリングで広く使用されています。

これらのプロダクションレベルのイメージベースドライティングシステムは説得力のある照明効果を生成しますが、実務者は手動のプローブとプロキシの配置が生産における重要な未解決の問題であることに同意します[Hooker 2016]。これらの手動調整なしでは、明暗(つまり、影)の漏れ、および反射の変位は避けられません。 代わりに、一部のアプリケーションは、ピクセル精度の反射をスクリーン空間レイトレーシング[Valient 2014]に依存しています。 ただし、反射したオブジェクトがカメラの視点から見えない場合、これは失敗します。

ライトフィールドプローブは、シーンジオメトリに関する追加情報をエンコードすることにより、これらの問題を自動的に解決します(セクション3)。 手動で配置する必要はなく、すべての結果はプローブの単純な均一なグリッド配置を使用します。反射は、我々の正確な世界空間レイトレーシングアルゴリズム(セクション4)のおかげで、反射があるべき場所に(一貫して)現れ、可視性を考慮したブレンドウェイトは、フィルタリングされた輝度プローブをサンプリングする際に自動的に計算される(セクション5)ので、各プローブについて手動で幾何学的なプロキシを配置する必要はありません。

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

その他の研究
Cigolle et al。[2014]の球体から単位正方形への八面体マッピングを使用して、球体分布を調べます。これは、立方体マップよりも歪みがわずかに少なく、境界線の取り扱いが許容されるためです。 ピクセルシェーダー内で真のワールド空間レイトレーシングを有効にすると、この手法は、以前の多くの、たとえばリアルタイム環境マップモンテカルロ積分手法の一般化として解釈できます[Stachowiask 2015; Wyman 2005; Tothら 2015; Jendersieら2016]。

私たちの研究のための予備調査は、単一プローブでの光線追跡が星形の幾何学的領域に対して正しいことを示したEvangelakos[2015]と、複数プローブ追跡アルゴリズムを提案したDonow[2016]によって行われました。

3 Light Field Probe Structure

シーンの連続ライトフィールド\(\mathcal{L}(\mathbf{x}, \omega)\)は、シーンのすべてのポイントと方向の放射輝度の空間角分布をエンコードします。ここで、\(\mathbf{x} \in \mathrm{R}^3\)は自由空間(つまり、 シーン)および\(\omega \in \mathrm{S}^2\)は、\(\mathbf{x}\)での単位の出力方向です。

この分布の拡張された離散表現を構築するため、空間と方向の位置の離散化が必要です。 シーンのバウンディングボックス内の規則的なグリッドを使用して、ライトフィールドの空間変化を離散化します。 この規則的な構造により、トレースアルゴリズム(セクション4)を簡素化できますが、構築時およびクエリ時に各ボリュームグリッドセル内でジッターした空間サンプルを使用することを妨げるものはありません。 このようなジッタリングは、アーティストがオブジェクトの内側に収まる空間サンプルを移動して効率を向上させたり、ラテン方格などの協調サンプリングパターンを使用して、グリッドに正確に位置合わせされたシーン要素の最悪の場合の動作を回避するのに役立ちますが、必須ではありません。なぜかというと、我々のレイトレーシングアルゴリズムは、完全に遮蔽されたプローブの結果を自動的に無視するためです。

各離散サンプル位置\(\mathbf{x}’\)に、\(\mathbf{x}’\)についての方向\(\omega\)を次の量にマッピングする球面ライトフィールドプローブを保存します。

  • \(x’\)(つまり、\(\mathcal{L}(\mathbf{x}’, \omega)\))のライトフィールドの(離散化された)球形の「スライス」。これは、周囲のシーンジオメトリと光源からの\(\mathbf{x}’\)のローカル入射放射輝度分布に対応します。
  • (出射)方向\(\omega\)で\(\mathbf{x}’\)に最も近い点\(\mathbf{x}^{\prime\prime}\)の表面法線\(\vec{\mathbf{n}_{\mathbf{x}^{\prime\prime}}}\)
  • \(\mathbf{x}’\)と\(\mathbf{x}^{\prime\prime}\)の間の半径距離\(r_{\mathbf{x}’ \leftrightarrow \mathbf{x}^{\prime\prime}}\)。

ラスタライゼーションを使用して、プローブの幾何学的情報(たとえば、点\(\mathbf{x}^{\prime\prime}\)での法線\(\vec{\mathbf{n}_{\mathbf{x}}^{\prime\prime}}\)および半径距離\(r_{x’ \leftrightarrow x^{\prime\prime}} \)を作成し, 放射輝度\(\mathcal{L}(\mathbf{x}’, \omega)\)分布を数値ライティングシミュレーションを使用して球面ライトフィールドスライス放射輝度\(\mathcal{L}(\mathbf{x}’, \omega)\)分布を生成します:アプリケーションに応じて、このシミュレーションは、既存のインタラクティブシェーディング技法(シャドウマップを使用した遅延レンダラー)を使用してラスタライズ中に計算するか、オフラインパストレーサーを使用するか、 あるいは我々のシェーディングアルゴリズムによる対話的なアプリケーションを通じて生成されます(セクション5)。私たちのすべての結果は後者を行います:具体的には、直接照明の最初のバウンスでは、\(\mathcal{L}(\mathbf{x}’, \omega)\)は単にシーン内のライトの放射プロファイルを含んでおり、追加のライトバウンスを用いて反復的にシェーディングに\(\mathcal{L}(\mathbf{x}’, \omega)\)を投入します。アルゴリズムは、ラスライゼーションを使用してプローブ自体を計算できるため、ほとんどのライトマップ生成アルゴリズムのような、別個のジオメトリックレイトレーサーは必要ありません。

セクション4では、このデータ構造を使用して物理ベースの光輸送量を入力、更新、およびクエリできるレイトレーシングアルゴリズムについて詳しく説明しますが、その前に、最新のGPUでこの離散表現を実現するための実用的なガイドラインを提供します。

実装詳細
エンジンの通常のラスタライザーパスを使用して、各プローブ位置で高解像度のキューブマップ面をレンダリングし、低解像度の八面体投影にリサンプリングします[Cigolle ら 2014](補足コードを参照)。八面体パラメーター化は、球体全体を正方形にマッピングします。正方形は、同等の解像度の立方体マップよりも歪みが少なく、境界が少なく、境界が単純です。 これはアルゴリズムの導出には不可欠ではありませんが、キューブマップの保存と比較して、同じ品質レベルで約4分の1のスペースと帯域幅の削減が得られます。 八面体マッピングは、他のほとんどの球体から正方形へのマッピングとは異なり、効率的なレイマーチングに必要な区分的線形投影も保持します。

各プローブの正方形マッピングを2Dテクスチャ配列の1つのレイヤーとして保存します。 高ダイナミックレンジ放射輝度値はR11G11B10F(32ビット/ピクセル)形式でエンコードされ、法線\(\vec{\mathbf{n}_{\mathbf{x}}^{\prime\prime}}\)はRG8(16 bpp)で、半径距離\(r_{\mathbf{x}’ \leftrightarrow \mathbf{x}^{\prime\prime}}\)はR16F(16 bpp)でエンコードされます )、八面体テクセルあたり8バイトの合計。 図2は、Sponzaシーンの\(4^3\)グリッドのこれらのライトフィールドプローブテクスチャを示しています。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

静的照明とジオメトリの場合、代わりに、放射輝度に圧縮BC6H(8 bpp)形式を使用し、法線に2つのBC5テクスチャ(2×4 bpp)を使用して、テクセルあたり4バイトにストレージコストを削減できます。 残念ながら、現在のGPUには、半径距離のエンコードに適した圧縮16ビットスカラー圧縮がありません。 BC圧縮は遅く、シェーディングアルゴリズムの帯域幅は通常のサイズと放射輝度のサイズにほとんど依存しないため、結果はすべて非圧縮テクスチャを使用してライトフィールドの生成時間を短縮します。 また、八面体マップを使用して、単位法線ベクトルを2Dでエンコードします。

シェーディングアプリケーション(セクション5を参照)に対して,ライトフィールド放射輝度「スライス」\(\mathcal{L}(\mathbf{x}’, \omega)\)を事前にフィルタリングし、さらにすべての可能な受光面に対して余弦重み付き入射放射照度プローブ\(\mathbf{E}(\mathbf{x}’, \vec{\mathbf{n}})\)を追加で保存すると便利です。 \(\mathbf{x}’\)(向き\(\vec{\mathbf{n}}\)) ここで、\(128^2\)を超える八面体解像度では拡散シェーディングの精度が向上せず、多くのシーンで\(32^2\)の低いプローブ解像度でも良好な結果が得られることがわかりました(シーンの可視性の複雑さに依存します)。 また、放射照度プローブを8面体テクセルあたり8バイトで保存し、放射輝度表現の法線を、後で説明するチェビシェフテストに必要な16ビット浮動小数点の2乗深度に単純に置き換え、他のチャネルを保持します。

ラディアンスプローブの場合、必要な解像度は画像オブジェクトの解像度とシーンオブジェクトの最小のマイクロファセットの粗さに依存します。たとえば、完全なミラーでの反射エイリアシングを避けるために、プローブの中心のピクセル\(\mathbf{x}’\) に対する立体角より大きくないテクセル立体角を持つ八面体プローブの解像度が必要でした。我々は\(1024^2\)の放射輝度マップをお勧めし、解像度パラメーターで明示的に実験する場合を除き、すべての結果に使用します。

図1は1920×1080でレンダリングされ、シェーディングは最大解像度で計算されています。 これは、たとえば1/4の画面解像度で動作する最新の画面空間レイトレーサーとはまったく対照的です。

4 Light Field Probe Ray Tracing

一般的に、すべての物理ベースのレンダリングアルゴリズムは、レイトレーサー上に実装できます。レイトレーサーでは、(潜在的に非干渉性の)レイを使用して、可視性を解決し、シーンの放射量をサンプリングします。 具体的には、レイとは、レイの原点\(\mathbf{r}_o \in \mathrm{R}^3\)からその方向\(\mathbf{r}_d \in \mathrm{S}^2\)に沿った距離\(t\)でパラメータ化された点\(\mathbf{p}(t) = \mathbf{r}_o + t \mathbf{r}_d\)を持つ半直線のことです。可視性を解決し、シーンを照会することは、シーンジオメトリに対してレイを交差させ、(最も近い)交差点 \(\mathbf{p}(t’) \equiv \mathbf{p}’\)を求めて解くことになります。

ライトフィールドプローブの放射距離と可視法線は、インコヒーレントなワールド空間レイの交点を解決するために使用される幾何学的情報を符号化し、放射輝度(および放射照度)プローブは、関心のある放射量、すなわち、出射放射輝度\(\mathcal{L}(\mathbf{p}’, -\mathbf{r}_d)\)(および入射放射照度\(\mathbf{E}(\mathbf{p}’, \vec{\mathbf{n}} \equiv -\mathbf{r}_d)\))を符号化します。

ライトフィールドレイトレーサー(リスト1)は、最初にプローブを選択し、単一プローブレイインターセクションルーチンを呼び出して、そのプローブで定義されたジオメトリをマーチします。 シングルプローブルーチンがhitまたはmissイベントを正確に判断できない場合、アルゴリズムは次の候補プローブに進み、シングルプローブルーチンを再適用します。

そのため、シングルプローブルーチンは、3つの可能な結果のうちの1つを返します。確定的なhit、確定的なmiss、またはunresolvable終了コード。 後者は、レイがプローブの目的の中心から遮られた3D領域に入るときに発生します。 言い換えれば、プローブが空間の領域に必要な可視性情報を持たないことを「分かっている」場合、その領域を通過するレイの交差は、1つのプローブからの情報のみを使用して(確実に)計算できません。 ただし、シーンに格納されているライトプローブの密度を上げると、プローブ間で正確なワールド空間レイオブジェクト交差の解像度を(非常に迅速に)保証できることに注意してください。 以下およびリスト1で、シングルプローブおよびフルレイトレーシングアルゴリズムの詳細を説明します。

リスト1:レイトレーシングアルゴリズムについての疑似コード

def lightFieldTrace(ray):
    result = UNKNOWN
    while result == UNKONWN
        choose the next probe
        (result, endpoint) = singleProbeTrace(ray, probe)
        ray.origin = endpoint     # Advance the ray to the last point checked
    return result

def singleProbeTrace(ray, probe):
    compute the four 2D polyline segments
    for each polyline segment:
        for each 2D pixel and corresponding 3D point on the segment:
            compare the voxel in the radial distance texture to the ray:
                if hit: return (HIT, point)
                if hidden behind surface: return (UNKNOWN, point)
                # (otherwise, keep iterating)
    return (MISS, last polyline endpoint)    # Reached the end of the line

 

4.1 Light Field Ray Tarcing Algorithm

ライトフィールドレイトレーサーは、プローブを選択し、その単一プローブ内でトレースし、最終的なヒットまたはミスになるまでそのプロセスを繰り返します。

プローブの選択
単純なシーンを除き、シーンの境界ボックス内のレイの原点\(\mathbf{r}_o\)は、8つのライトフィールドプローブの立方体のケージ内に含まれます(図3)。 空間的な局所性のため、これらのプローブは同様のシーン可視性情報を持っているため、レイとシーンの交差をテストに使用する合理的な候補です。 もちろん、このヒューリスティックは、深さの複雑さとプローブ密度の低いシーンでは失敗する可能性がありますが、使用するシーンにはまばらに配置されたプローブでも十分でした。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

レイを含む線に最も近い中心にあるプローブは、ほぼ常にレイの最短八面体投影になるため、そのプローブから始めます。 この方法で最初のプローブを選択すると、いくつかの追加の利点があります。まず、可視性のマーチング中に必要なテクスチャフェッチの数を最小限に抑える可能性があります(以下を参照)。 そして、第二に、このプローブは、真の(つまり、ワールド空間)ヒットまで、レイの遮られていない部分全体を「観測」する可能性があります。

プローブの選択は、テクセル内の深度エイリアシングおよび有限精度を除き、精度ではなくパフォーマンスにのみ影響することに注意してください。 つまり、複数のプローブで観測されるポイントは、それらすべてのプローブの同じワールド空間の場所で表され、ポイントを観測できないプローブには最も近いオクルーダーの位置が含まれます。 問題はシャドウマッピングアルゴリズムの問題とまったく同じであり、同じ点の異なる離散投影も比較します。 したがって、プローブの選択プロセスは、利用可能な精度内で同じレイ交差の結果につながるため、ヒューリスティックに効率的な選択を好みます。

単一プローブとヒューリティカルなトレーシングルーチン
\(\mathrm{R}^3\)の線分は、球面八面体投影後、\(\mathrm{R}^2\)のポリライン(最大4つのセグメント)にマッピングされます。 各ポリラインセグメントは個別の八面体面上にあり、セグメント端点の2D座標は、3D線とプローブ中心を通る3つの主軸に沿った平面の交点の2D投影です。 これらは、投影後の八面体面に対応する8つの象限を定義します。

単一のプローブ内でレイをトレースするには、2Dポリライン端点を計算し、八面体マップのポリラインに沿って最適にマーチします。 交差点テストは、テクセルでプローブに保存されている放射状の深度マップ値に対してポリラインポイントを深度テストすることにより、各テクセルで計算されます:シーンの保存された放射状の深度が、プローブの中心から 現在、行進ポリラインテクセルの場合、レイはサーフェスに当たるか、サーフェスの後ろを通過しています。

八面体の面内で、このトレースルーチンは、ボクセルおよびハイトフィールドトレース用の階層アルゴリズムのGPU最適化された異形となります[AmanatidesとWoo 1987; Musgraveら1989; McGuireとMara 2014]。min-MIPマップを使用して、テストを階層的に改良します。 各八面体テクセルは、通常の\(\vec{\mathbf{n}}_x^{\prime\prime}\)で、プローブの原点からの距離\(\mathbf{r}_{p’ \leftrightarrow \mathbf{x}^{\prime\prime}}\)にある平面パッチ(サーフェル)を表します。法線および表現の精度に基づいて、そのパッチを球体のボクセルでバインドしました。 レイ\(\mathbf{p}’\)に沿って現在マーチしているポイントは、対応するテクセルの境界がボクセルの境界と重なる場合、ボクセルと交差します。 八面体法線マップから観測された法線\(\vec{\mathbf{n}}_x^{\prime\prime}\)を使用して、レイ(プローブの中心ではない)に対する背面交差を除外できます。 この背面の識別は、(非現実的に薄い)両面ジオメトリ(たとえば、Sponzaのカーテン)のシーンに必要です。

デバッグレイトレース出力を図4に視覚化します。ここでは、居間シーンでのプローブの八面体投影での単一レイの3セグメントポリラインを確認します。 説明のためにポリラインを放射輝度テクスチャの上にオーバーレイしますが、実際のトレースでは放射距離と通常のプローブデータを使用します。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

フォールバックプローブの選択
単一プローブの階層的レイキャストが、以前に選択したプローブでも決定的なヒットまたはミスを見つけることができない場合、新しいプローブを選択してプロセスを繰り返す必要があります。 そのためには、以前のプローブトレースが終了したポイント\(\mathbf{r}_o’= \mathbf{r}_o + t’ \mathbf{r}_d\)にレイの原点を進めます。\(\mathbf{r}_o’\)が境界プローブの異なるキューブ内にある場合、同じ選択手順を再利用して、新しい8つの候補プローブから次のプローブを選択します。 ただし、元の8つのプローブの境界ボックス内に\(\mathbf{r}_o’\)が残っている場合、以前のプローブから最も遠い未テストのプローブをヒューリスティックに選択します。このヒューリスティックは、以前のプローブから可能な限り移動すると、局所的に閉塞するジオメトリを回避するという仮定に依存しています 。 図5は、典型的なシーンのレイの交差を解決するために使用されるプローブ番号を視覚化します。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

この選択ヒューリスティックを尊重する、シンプルで効率的な手続き反復シーケンスを定義できます(図3)。 一般性を失うことなく、シーン(レイを含む)を変換およびスケーリングして、\(1 \rm{m}^3\)キューブ内に8つのプローブを配置し、原点を下隅に配置すると仮定します。 最小の\(x\), \(y\), \(z\)座標を持つプローブのインデックスは\(\lfloor \mathbf{r}_o \rfloor\)であり、隣接するプローブ\(0 \leq i \leq 8\)の相対インデックスは\(\lfloor \mathbf{r}_o \rfloor +(i \mathrm{mod} \, 2, \lfloor i / 2 \rfloor \mathrm{mod} \, 2, \lfloor i / 4 \rfloor \mathrm{mod} \, 2)\)。

順列を徹底的に検索すると、最適な8要素のプローブインデックス選択シーケンスが得られます。つまり、プローブを再訪せずに常に最も遠いプローブに移動します。 レイに最も近い相対インデックスiから始まるシーケンスは、\(i’=(i + 3) \mathrm{mod} \, 8\)で与えられます。この選択シーケンスは、ビット単位の操作で効率的に評価できます。

繰り返しますが、選択手順はレイトレーシングの精度には影響せず、パフォーマンスのみに影響することに注意してください。 8つのプローブすべてに対してテストした後、まだ真のワールド空間の交差点を見つけることができない場合(つまり、プローブがどれも密に散乱した複雑なオクルーダーの背後の光線の経路を観察できない場合)、単純にレイは最後に観測された位置でオクルーダーにhitと仮定しました。

4.2 Discussion

プローブ選択基準により、八面体投影後の(ほぼ)最短の2Dポリラインが得られます。 これにより、メモリとパフォーマンスのトレードオフが容易になります。2Dポリラインの長さを短くすると、マーチするポリラインテクセルの数が減ります(したがって、放射状深度テストの数も減ります)。 プローブ密度を上げると、精度が向上するだけでなく、投影される光線の長さが短くなり、パフォーマンスも向上します。 無限のプローブ密度の制限では、常に光線の原点の上に中心を持つプローブが存在するため、プローブ全体の単一のテクセルに光線が投影されます。このプローブでは、単一のテクセルだけ深度テストする必要があります。

実装詳細
最新のGPUで高スループットのためにアルゴリズムを最適化するには、慎重な管理設計と最適化が必要です。GPUコンパイラは、多くの場合、重要な並列処理の影響を受けやすいデータおよび計算変換を実行するほど洗練されていません。 実装では、ピークレジスタ数を最小限に抑えようとしています(レジスタの使用量が増えるとスレッド数と並列処理が減少するため)。 また、スレッドのワープが分岐で分岐すると、命令コストが両側で2倍になるため、分岐を再配置して収束性を高めます。 補足コードには、ピクセルシェーダーとコンピューティングシェーダーの両方での使用に適した、トレースアルゴリズムの完全に最適化されたGLSL実装が含まれています。

実際には、放射深度テスト用に2レベルの深さmin-MIPmap階層を修正することで最適なパフォーマンスを観測します。2番目のレベルは\(1/16^2\)×解像度です。 この動作は、シェーダープログラムがメイン(ビデオ)メモリにレジスターをスピルせずにスタックを使用できないという事実によって説明できます。そのため、完全な階層を使用する漸近的な利点は、メインメモリへのアクセスによって発生する大きな一定の要因のコストによってオーバーウエイトされます。

5 Shading with Light Field Probes

次に、3つのグローバルイルミネーションアルゴリズムについて説明します。後者の2つは実用的です。ブルートフォース重要度サンプリングモンテカルロレンダラーは、より効率的な拡張機能で、ランベルト項と光沢項を分離してポストフィルタリングすることで必要なレイサンプル数を減らすことができます。また、非常に高速でありながら偏ったソリューションであり、ランバート反射を事前にフィルタリングし、光沢のある反射のためのレイのみ(これもまた事前フィルタされる)をトレースすることができます。

ナイーブなレンダラー
セクション4のレイトレーシングアルゴリズムを考えると、GPUを活用するレンダリング方程式に対する単純なハイブリッドラスタライゼーション/モンテカルロレイトレーシングソリューションを簡単に実装できます。

ピクセルシェーダーでシャドウマップ(および遅延レンダラー)を使用して、直接見えるサーフェスをラスタライズし、直接光を計算します。 次に、同じピクセルシェーダーでレイトレースを行い、モンテカルロ積分を使用して間接照明を推定します。重要度サンプリング分布に従って\(n\)個のランダム光線を追跡し、それぞれがライトフィールドからサンプリングされた入射放射輝度値を返し、余弦加重双方向反射分布関数(BRDF)によってサンプルをスケーリングし、サンプリング分布と\(n\)で正規化します。積分は任意の(\(\mathrm{valid}^3\))サンプリング分布に収束します。

この単純なアルゴリズムは、静的オブジェクトと動的オブジェクトの両方に対する間接効果を捉えます。また、プローブに再レンダリングすることにより、任意の数の散乱イベントに対するライトフィールドプローブの放射輝度分布を徐々に埋めるために使用することもできます。 ただし、このアプローチには2つの制限があります。高次の間接照明効果における視点バイアスとパフォーマンスです。

具体的には、他の鏡によって反射されたオブジェクトのミラー反射など、2次および高次の間接照明(つまり、以前のシェーディングの反復から計算されたシェーディングに依存する反復的に再レンダリングされたプローブから)は、プローブの位置に従って視点がバイアスされます。 これはエラーであるため、たとえば、最先端のスクリーン空間レイトレーシングやワープされた環境マップの影響を受ける歪みのある最初のバウンス反射よりも実質的に好ましくないため、この問題を将来の研究の潜在的な領域として残します。

代わりに、特にリアルタイムレンダリングアプリケーションを対象としているため、より差し迫ったパフォーマンスの問題の解決策を提案することに焦点を当てています。 (不完全な)モンテカルロサンプリングプロセスでは、分散が発生します。これは、相関のないピクセルサンプリングの場合、イメージノイズとして現れます。 オフラインレンダリングは、サンプリングレート\(n\)を増やし、ポストプロセスデノイザーを適用することでこれに対処します。どちらの場合も、追加のフレームレンダリング時間がかかります。 代わりに、最新のリアルタイムレンダリングパイプラインに適した近似と最適化により、単純なレンダリングアルゴリズムを拡張します。 これらは必然的にバイアスを導入しますが、ノイズを大幅に削減し、現在の多くのリアルタイムアプリケーションで許容されるレベルにパフォーマンスを向上させます。

5.1 Spatial-Temporal Radiance Denoising

Gバッファを使用して別のパスで間接入射照明のノイズ除去された推定値を計算し、コサイン重み付きBRDFを適用し、その結果を以前のパスで計算された(そしてフレームバッファに保存された)直接照明に追加します。

ほとんどのBRDFは、ランベルト項と1つ以上の狭小ローブまたは方向性の異なるフレネル係数によって結合されるインパルスへと分解することができます。BRDF重要度サンプリングでは、ランベルト成分に比例して描かれた方向は、表面法線についての照明の半球全体を均等にカバーするため、トレースされたときに非常にノイズの結果を生成する傾向があります。完全なミラーリフレクターは、ノイズを生成しない暗黙項に対応しています – それらは、単一の明示的なサンプリング方向になります。マイクロファセットBRDFモデルからのような狭い光沢ローブに比例したサンプリングは、ノイズの多い光沢反射現象を生成しますが、ランベルシアン推定値よりもはるかに少ない分散を持っています。

我々はBRDFを2つの項に因数分解し、これら2つの要因に比例したサンプルを描画することを選択します:均一なランベルシアン半球分布、および完全な鏡面インパルス、再帰反射、および光沢のあるローブを組み合わせることができる “光沢のある”項です。我々の間接照明パスは、これらのそれぞれからサンプリングされた1つのレイをトレースし(コンサイン重み付けを用いて)、その結果を(ノイズの多い)ランベルシアン入射放射輝度バッファと光沢のある入射放射輝度バッファに書き込みます。

ランベルシアン反射については、アルベド変調された出射放射輝度の代わりに、積分された入射放射輝度を計算して保存します。これにより、表面のアルベドをぼかしたり、偏らせたりすることなく、数値的な推定値をノイズ化することができます。我々は、表面間の差を測定するためにGバッファ法線と深度を使用して、スタンドアードクロスバイラテラルと再投影された時間フィルタを使用して、2回目のパスでこの入射放射照度をノイズ除去します。ここで、ランベルシアン項と光沢のある項を分離することの利点が明らかになります:ランベルト項は(等サンプリングレートで)ノイズが多いですが、空間的にはより遅く変化します。そのため、フィルタリングの恩恵をより多く受けることができ、より広いフィルタの使用を認めることができます。我々の結果は、半径12ピクセル、ストライド2ピクセル、指数関数的に重み付けされた移動平均時間フィルタ(ヒステリシス98%)を使用しています。光沢成分に応じてサンプリングされた照明はノイズが少ないだけでなく、空間的に速く変化するので、我々は半径3ピクセルの空間フィルタと75%のヒステリシスの時間フィルタのみを適用しています(図7)。

このアプローチは、標準的なオフラインレンダリングの実践[Bitterliら2016]に似ていますが、はるかに軽量化されています。1ピクセルあたり2つの間接光線のみで、アウトデノイジング処理は、1ピクセルあたり数百のサンプルのオーダーのサンプリングレートを使用して計算された画像と比較して、同等の品質の結果を達成することを可能にします。非ノイズ化は、(空間と時間の両方で)いくつかの反射ぼかしを生成し、フィルタパラメータは、ユーザがアプリケーションのニーズとシーン材料の構造に応じて、ノイズとぼかしの間で取引することを可能にします。

5.2 Irradiance with (Pre-)Filtered Visibility

ランベルトな反射をサンプルするレイは、空間内でより滑らかに変化する関数を推定するので、光沢のあるサンプルよりもピクセルあたりの情報量が少ないです(すなわち、図7と図6の左側を比較してください)。一方、(そして皮肉なことに)ランベルト線は、その非干渉性のためにトレースするためにより高価です:例えば、図5は、光沢のあるヒットを解決するために使用されるプローブのコヒーレンスを示しています;単一サンプルのランバート線積分のための類似の可視化は、本質的にランダムに着色された画像が得られます。これは、私たちのライトフィールドプローブとレイトレーシングを組み合わせることで、例えば手動で配置されたプローブやオクルージョンプロキシジオメトリに対して、よりロバストな解決策を提供することができるという代表的な例です。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

適切なプローブ密度を仮定すると、入射放射照度は、可視性がキューブ内で急速に変化する場合を除き、8個のプローブキューブの体積内でゆっくりと変化します。この放射照度マップを用いて、\(128^2\)八面体の放射照度マップを(準)モンテカルロ積分推定値を用いて事前計算しました。ランタイムでは、交点の立方体内の8つのプローブの照度マップを三直線的に補間することにより、遮光点での入射放射照度を推定します。これにより、網羅的なサンプリングに起因する数十から数百のテクスチャ操作を、ランタイムに8つの事前フィルターされたフェッチのみに削減することができます。

この方法で入射放射照度を補間する従来の方法の大きな制限の一つは、放射照度プローブの立方体グリッドのボリューム内のオブジェクトを介して照明や暗闇が「漏れ」てしまうことです(図13を参照):具体的には、キューブ・ボリューム内のシェーディング・ポイントと1つ以上のプローブとの間の相互可視性の仮定が無効になる場合です。我々は、レイマーチに使用される幾何学的データをフィルタリングすることで、このようなアーチファクトを回避する、事前計算された入射照度を使用するための幾何学を考慮したアプローチを紹介します。

コサインフィルタリングされた放射照度マップを事前に計算すると同時に、放射距離と半径2乗距離のフィルタリングされたマップも計算します。これらは、放射距離の第一モーメントと第二モーメントに対応しています。これらのマップをコサインパワーローブでフィルタリングし、離散的な距離値のエイリアシングを考慮しながら、それらの値が過度にぼやけないようにしています。図8は、居間シーンの3つのプローブ位置でのこれらのマップを示しています。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

実行時には、周囲の放射照度マップから補間するためのジオメトリを考慮した重み付けを計算するために、トライリニア重み付けを2つの追加項と組み合わせます:シェーディング点のサーフェイス法線と方向の2乗の各プローブ中心のクランプされた内積(すなわち、投影面積)です。空間的に滑らかな背面テストに対応する投影面積)、および局所的な放射距離分布のチェビシェフ可視性テストによって、2つのフィルタリングされたモーメントを、分散\(\sigma^2 = |E[r]^2 – E[r^2]|\)を持つ分散シャドウマップテスト[DonnellyとLauritzen 2006]の球形類似体として使用する。8つの重みの合計で結果を正規化しました。好ましい実装とフィルタの重みについては、コードの補足を参照してください。

サーフェイスに対して高品質なライトマップを単純に計算することから放射照度プローブのストレージからテクスチャ空間を使うのはどうでしょうか?理由は2つあります。第一に、対応する高品質なサーフェスのパラメータ化を必要とするため、シーンが幾何学的な相互干渉なしにモデル化されていない限り、壁の内側半分と外側半分の床のような照明条件を横切る場所にテクセルが配置されテクスチャアトラスの継ぎ目がある場所に補間の不連続性が発生してしまいます。第二に、事前に計算された放射照度マップは、静的なサーフェス上でのみ有用です。事前にフィルタリングされた可視性を持つ我々の照度プローブを使用すると、動的オブジェクトを含むシーン空間のあらゆる場所で放射照度を収集することができます。

6 Results

\(1024^2\) テクセルのライトフィールドプローブテクスチャと \(128^2\) テクセルのフィルタ付き可視照度プローブを使用して、GeForce 1080 上で 1920×1080 ですべての結果をレンダリングします。我々の実装は、そのディファードシェーディングモードと我々の補足資料のシェーダーを使用して、G3D [McGuireとMara 2016]エンジン上で構築されています。

放射照度の可視性
図8は、居間のシーンにおけるプレフィルタリングされた照度と放射距離モーメント(ラストロングパラメータ化)を可視化したものです。プローブ#11は黄色のカーテンの近くにあり、プローブ#40と#41は互いに隣接しており、赤いスツールと本棚の近くにあります。この例では単一の散乱イベントしか発生していないので、間接光はまだ天井に散乱していないため、プローブの上部は暗くなっています。隣接するプローブ(#40と#41)も同様の放射照度を有しており、その空間的変動の遅さと、補間のための合理的な基準点であることを確認しています。しかし、それらの半径方向の距離マップ(可視性に影響を与える)は著しく異なっており、これは、我々の拡張された可視性フィルタリングとテストプロセスを正当化するものです。

図9は、コーネルボックス内の8つの放射照度プローブの相対的な補間ウェイトを可視化したものです。中央の画像の色のグラデーションは三本線空間重み付けによって支配されていますが、背面の法線では急激に変化し、箱が赤とラベンダーのプローブを遮っている床には重みの「影」が現れます。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

ライトリーク
既存の放射照度プローブ、ボクセル、ライトマップでは、2 つの状況で光と暗闇の漏れが発生します:第1に、プローブ(またはテクセルまたはボクセル)が物体の内部にある場合、プローブは完全に黒く、それ自身の周りに暗闇が漏れます。第二に、プローブが自由空間にあるにもかかわらず、照明条件がその周囲で急速に変化する場合(すなわち、オクルージョンによって)、例えば、壁を通って光が漏れることがあります。

図10(左)は、最先端の放射照度マッピング・トライリニア補間スキームを用いて、物体内部にプローブを配置した場合を示しています。このシーンは、3x2x3のプローブグリッドでモデル化された4つの円柱を持つ箱で構成されています。間接照明の寄与のみを可視化しています。中央と右の円柱は、これらのプローブのうち3つのプローブをまとめて重ねており、すべてのプローブが黒(全方向)を記録しています。左のサブイメージの中央と右上の暗闇のプールに注意してください。図の右側では、プレフィルターされた可視性テストは、これらの「カバーレッド」プローブからの寄与を正しくダウンウェイトし、暗闇がシーンに漏れるのを防ぎます。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

図11は、3x2x3プローブグリッドでモデル化されたオクルード形状のシーンにおける4つのバージョンの間接照明を示しています。上の行は、プローブグリッドにトレースされたピクセルごとの単一サンプルのグローバルイルミネーションサンプルと、ノイズ除去された結果を表示しています。この結果は、13ms(フィルタリングあり)で内壁周りの光漏れのないソフトな間接光の影をレンダリングしています。下の行では、従来の照度プローブは中央領域に光が漏れているのに対し、我々のプレフィルタリングされた可視性は光の漏れを防ぎ、中央に間接的な影を投げかけています。(b)の縁や柱からの柔らかい間接的な影は、プレフィルターされた可視性では失われますが、この近似値はノイズなしで約65倍速く0.2msでレンダリングされます。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

図12は、Sponzaにおける光漏れ対策を説明するための図です。約20ピクセルのみが直接点灯し(小さな明るい三角形)、従来の照度プローブ(左)はアトリウムの中央からカーテンや柱を通って光を漏らしています。我々のプレフィルターされた可視性(右)は、カーテンの下や横の隙間から正しく伝搬すべき場所を除いて、間接光を正しく遮断します。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

図13は、幾何学的に単純なシーンであっても、従来の放射照度マップ補間を使用して光漏れが発生するような、ラジオメトリックに複雑な状況がどのように発生するかをさらに示しています。ここでも、フィルタリングされた可視性の補間は、大幅にアーチファクトを低減し、高忠実度のライトフィールドのレイトレースに似た結果を生成します。

複雑な照明
図21(本稿の最終ページ)は、複雑な材料や形状を持つシーンでの直接照明と完全なグローバルイルミネーションを比較したものです。上段はプローブの位置も可視化しており、各ケースでは、収束するまでの間接照明のために、プローブは独自の以前の照明反復を使用して再レンダリングされました。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

ライトフィールドグローバルイルミネーションの利点は、ソフトシャドウイングを含むエリアライトエミッターからの直接光を自動的に処理することであり、これは、エリアライトの光沢反射のための最近の解析手法とは違います[Lecocqら2016;Heitzら2016]。図14は、私たちのライトフィールドプローブレイトレーサーを使用して、Heitzらの研究からのシーンを排他的に再現することによって、この特徴を実証しています。我々は、エリアライトの前に像を配置し、光沢のある床からの反射を正しくシャドウイングすることができ、また、側面のバナーを反射することができます。このシーンには明確な直接照明の項はなく、唯一の光源は放射状の正方形です。これは数学的にはエリア光源を使ったパストレースと等価なので、正しい結果が得られても不思議ではありません。しかし、ライトフィールドプローブデータ構造とレイトレーシングアルゴリズムにより、コンシューマハードウェア上のリアルタイムレンダラで初めて実用的にこれを採用することが可能になり、シーン内のエリア光源の数に依存しない実行時間を持つようになりました。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

図15は、我々の手法でうまく処理された難解なケースを示しています。このキッチンシーンは、オーバーヘッドライトからの薄暗い直射照明と明るい太陽に照らされていますが、太陽は(窓から)背景のドアにだけ照らされています。間接照明がほとんどのピクセルで支配的な寄与をしています。カウンタートップの光沢のある反射は間接光によるもので、蛇口とティーポットによって正確にブロックされており、高精度の間接光のシャドウイングを実証しています。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

我々の実装では、シーン初期化時にプローブを一度だけ生成するので、静的オブジェクトからの間接照明のみをキャストしていますが、図16に示すように、実行時に静的オブジェクトと動的オブジェクトの両方に間接照明をキャストすることができます。これは、従来のライトプローブとボクセルコーントレースによって可能になるように、ゲームにとって重要な機能ですが、これらのソリューションとは異なり、ライトマップと事前計算された放射輝度伝達法[Sloanら2002]は、静的オブジェクトのみを照明することに制限されています。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

パラメータ
1つのプローブで、図17のホロデッキのような星型の体積のライトフィールド全体と可視性を捉えることができます。より複雑な可視性を持つシーンでは、プローブの数とその解像度の間に固定ストレージコストで品質のトレードオフがあります。図19と18は、居間のシーンについて、これらのパラメータを独立して変化させています。本棚の可視性エイリアシングとの微妙な相互作用がありますが、解像度は主にテレビやコーヒーテーブルなどで観察される光沢のある反射としての輝度エイリアシングに影響を与えます。左端のサブ図では、\(64^2\) -texelプローブのみを使用しています;これは、48x48x6 -texel環境マップを使用するのに匹敵するため、反射は明らかにtexelの境界を示しています。これは、不適切なパラメータで技術がどのように劣化するかを示すために示しており、このような極端なアンダーサンプリングはお勧めしません。光沢のある反射は、ほとんどの表面がプローブによって観測される場合には、プローブ数の影響を受けません。しかし、拡散性のある相互反射(天井やテーブルの下など)は、事前にフィルタリングされた可視性では位置変化を適切に捉えることができないため、プローブ数が少なすぎるとアーティファクトが発生する可能性があります。


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用


※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

パフォーマンス
表1は、本稿で紹介したシーンの間接照明のレンダリング時間を示したものです。ランベルト項を評価するための時間は、可視表面に影響を与えるプローブの数に起因するキャッシュの挙動に基づいてシーン間でわずかに変化します。ピクセルあたりの処理数は一定であり、光沢項の評価は、光沢反射を有する表面の数(例えば、Sponzaとコーネルボックスでは数が少なく、他のシーンではほぼすべて)、シーンの可視性の複雑さ、および光沢光線のコヒーレンスに基づいて大きく変化します。


※表は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

複雑な可視性により、トレースアルゴリズムはレイに沿ってプローブを頻繁に変更する必要があり、投影されたポリラインを再計算する際にセットアップコストが発生します。干渉性のないレイは、キャッシュの動作が悪く、メモリアクセスが干渉する原因となります。これらは両方ともSan Miguelで発生しますが、すべてのサーフェスには、広いポストフィルターを必要とするBRDF内の薄暗い広い光沢ローブがあるため、他のシーンよりも大幅に遅くなります。リアルタイムゲームのためにこのようなシーンのパフォーマンスを向上させるには、アーティストがBRDFを調整してパフォーマンスと外観のバランスをとるか、あるいは、レイトレースされたグローバルイルミネーションを受けていないとして低光度の光沢ローブにフラグを立てることができます。さらに、現在Geomericsのライトマップとプローブシステムで行われているように、ライトフィルドプローブの計算中にフォリッジをプロキシジオメトリに置き換えて可視性を単純化することもできます。

プローブの事前計算には各シーンで1~2分かかりますが、これは完全解像度での輝度プローブのレンダリングにかかるコストに支配されています(プローブの数と1つのフレームをレンダリングする時間の積(6つのキューブマップ面の倍))。八面体空間への投影とフィルタリングのコストは、さらに数秒しかかかりません。

Future Work

ライトフィールドの圧縮
圧縮されたテクスチャを使えば、500MBで128個のプローブをSan Miguelに保存することができます。オリジナルシーンの2GBの圧縮ジオメトリとテクスチャマップと比較すると、これは適度なオーバーヘッドに過ぎません;しかし、プローブ間には明らかに冗長なデータがあります。ライトフィールド固有の圧縮は、これを利用してストレージをさらに削減することができます[Changら2006]が、効率的なGPU読み取り操作でこれを実装することは未解決の問題です。

光沢サンプル事前フィルタリング
ボクセルのコーントレースと同じように、コーントレースを可能にするためにMIPマップチェーンを構築することによって、ライトフィールドプローブを事前にフィルタリングすることは魅力的です。これは、光沢のある項をポストフィルタリングする必要性を排除するでしょう。しかし、放射輝度マップを事前フィルタリングすることは些細なことですが、法線マップと距離マップを事前フィルタリングするための最適な戦略は自明ではありません。ボクセルコーントレースは、フィルタリングに起因する明暗のリークを生成し、複数の表面のオクルージョンが無相関であるという頻繁に不正確な仮定に基づいています(画像のアルファ合成がカバレッジの位置がレイヤー間で無相関であると仮定する方法と全く類似している)。ボクセルのためのより良いフィルタリング戦略が必要とされ、次に、ライトフィールドプローブの球状ボクセルのために必要とされます。

球面調和関数
球体調和関数基底への投影は、球体上の低次関数を表現し、それをフィルタリングする一つの方法であり、例えば、事前にフィルタリングされた放射照度プローブのようなものです。これらのプローブは、我々の八面体プローブよりもはるかに低いメモリフットプリントという利点を持っています。これらの理由から、我々は将来の研究として球上の高調波表現に興味を持っています。球面調和関数は再構成の際にリンギングが発生し、読み取るためにはより多くの帯域幅を必要とするため、今回の研究には取り入れませんでした。このリンギングは、深度モデルで発生した場合、明暗のリークを引き起こす可能性があります。帯域幅は2-3倍になります。例えば、八面体放射照度プローブのバイリニアフィルタリングには、4つの64ビット(\(\mathrm{RGB}\), \(\mathrm{Z}\), \(\mathrm{Z}^2\))サンプル=256ビットが必要です。3次の球面調和関数表現は576ビットを必要とし、実際には、我々の可視性プレフィルタリングコサインパワーフィルタ幅にほぼ一致するように、深度部分を4次に拡張するために786ビットを必要とします。

リアルタイムプローブ更新
Geomericsなどのシステムは、複雑なスケジューリングとスレッド処理を使用して、リアルタイムで放射輝度プローブやライトマップを再レンダリングします。私たちの入力データは類似しているので、グローバルイルミネーションソリューションのリアルタイム更新を可能にするライトフィールドプローブ表現にも同様のソフトウェア工学的アプローチが適用できるかもしれません。

プライマリレイ
ライトフィールドプローブレイトレーサーは、プライマリアイレイをレンダリングするために使用すると、許容できないエイリアシングを生成します(図20)が、初期の結果は有望であり、高いコヒーレンスのため、パフォーマンスは光沢のあるレイよりも高くなっています。プライマリレイのエイリアシングを解決すると、レンズを歪ませた投影物に直接トレースしたり、スクリーン空間のサンプル密度を調整してプローブをフィルタリングしたり、スキャンアウトの直前に各ピクセルをレンダリングするためのビームトレースなど、バーチャルリアリティのための興味深いアプリケーションが解放されるでしょう。

※図は,Morgan McGuire, Mike Mara, Derek Nowrouzezahari, David Luebke, “Real-Time Global Illumination using Precomputed Light Field Probes”, ACM Symposium on Interactive 3D Graphics and Games, 2017. より引用

コメントを残す

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

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