超雑訳 ReSTIR GI: Path Resampling for Real-Time Path Tracing

こんにちわ、Pocolです。
今日は…
[Ouyang 2021] Y.Ouyang, S.Liu, M.Kettunen, M.Pharr, J.Pataleoni, “ReSTIR GI: Path Resampling for Real-Time Path Tracing”, High-Performance Graphics 2021.
を読んでみようと思います。

いつもながら、誤字・誤訳があるかと思いますので,ご指摘いただける場合は正しい翻訳例とともに指摘していただけるとありがたいです。

※図は,[Ouyang 2021]より引用

Abstract

最新のGPUでハードウェアアクセラレーションによるレイトレーシングが可能になったとはいえ、リアルタイムアプリケーションでは各ピクセルでトレースできるレイの数はごくわずかです。このことは、最先端のノイズ除去アルゴリズムで補強した場合でも、パストレーシングに大きな課題をもたらします。最近開発されたReSTIRアルゴリズム[BWP*20]は、各ピクセルでわずか数本のシャドウレイを使用して数百万の光源を持つシーンの高品質レンダリングを可能にしますが、間接照明をサンプルする効果的なアルゴリズムの必要性が残されています。
高並列GPUアーキテクチャに適した間接照明の効果的なパスサンプリングアルゴリズムを紹介します。ReSTIRのスクリーン空間時空間リサンプリング原理を基に、パストレーシングによって得られたマルチバウンス間接照明パスをリサンプリングします。そうすることで、時間や画像内のピクセルの両方で照明に寄与する重要なパスに関する情報を共有することができます。その結果、パストレーシングと比較して、大幅なエラー低減を達成しました。毎フレーム、ピクセルあたり1サンプルの場合、我々のアルゴリズムはテストシーンにおいて9.3倍から166倍までのMSEの改善を達成しました。また、デノイザーと組み合わせることで、最新のGPUにおいてリアルタイムフレームレートで高品質なパストレース型グローバルイルミネーションを実現することができます。

1. Introduction

パストレーシング [Kaj86] が提供する柔軟性と汎用性は、リアルタイムレンダリングに非常に望ましく、複雑な照明、マテリアル、ジオメトリを持つシーンのフォトリアリスティックな画像をレンダリングする単一の統一されたアルゴリズムが期待できます。しかし,パストレーシングはその膨大な計算量のために,長い間リアルタイムアプリケーションには手が届かないと思われてきました。ハードウェアアクセラレーションによるレイトレーシング[McC12, NVI18]が登場しても、現在、リアルタイムフレームレートで各ピクセルでトレースできるレイはせいぜい数十本程度です。高品質のノイズ除去アルゴリズム(例えば、ScheidらのSVGFアルゴリズム[SKW*17, SPD18]やMunkberg and Hasselgrenの[MH20]などのニューラルアプローチ)はノイズの多い画像の外観を改善できますが、レイを効果的にサンプリングして、シーン照明に関する情報をできるだけ多く提供することが重要であることに変わりはありません。

 我々の研究は、マルチバウンスグローバルイルミネーション(GI)を用いたパストレース画像の品質を、ノイズ除去の前に最大化することに焦点を当てています。間接照明のサンプリング効率を向上させ、パストレースされたグローバルイルミネーションをリアルタイムで実現することを目指しています。そのために、Bitterliらによって直接照明のサンプリングのためにReSTIRアルゴリズム[BWP*20]の形で導入された、リサンプルドインポータンスサンプリング(RIS)[TCE05]とレゼバーリサンプリング[Vit85, Cha82]を組み合わせて採用します。

 ReSTIRがグローバルなライト空間に初期サンプルを配置するのに対して、本アルゴリズムはシェーディング点周辺の局所的な方向球の空間に初期サンプルを配置します。対応するレイを追跡することで、シーン内のサーフェイス上の点を得ることができます。レイ原点に向かって散乱する光の量によって、そのRISの重みが決まります。これらの点を空間的、時間的にリサンプリングすることで、シーンの間接照明に近似した分布から重み付きサンプルを生成することができ、大幅な誤差低減につながります。
 
 テストシーンでは、レゼバーによる大規模なリサンプリングにより、パストレーシングと比較して、平均二乗誤差(MSE)が9.3倍から166倍まで改善されたことが確認されています。不偏モンテカルロ推定量の分散はサンプル数に対して線形に減少するため、これらの結果は、パストレーシングが同じMSEを達成するために9.3倍から166倍のパスを必要とすることを意味します。

 この手法の特筆すべき点は、レゼバーとサンプルを格納するために必要なデータ構造がすべて、シーンの空間的な広がりに依存しない単純なスクリーン空間バッファであることです。一般に複雑なワールド空間のデータ構造を維持する必要があるパスガイディングアルゴリズムなどと異なり、我々のアプローチは固定量のメモリを使用し、容易に並列に更新することができます。各ピクセルは自分のレゼバーしか変更しないので、近くのピクセルのレゼバーにアクセスしたときに、どのレゼバーも変更されていないことを確認するのは難しくありません。そのため、GPUによる実装でも高い性能を発揮します。我々のReSTIR GI実装では、NVIDIA 3090 RTX GPUを使用して1080p解像度でレンダリングした場合、フレームあたり8ミリ秒から18ミリ秒が追加されます。

2. Previous Work

間接拡散グローバル照明のリアルタイムシミュレーションをターゲットとした既存の技術は幅広く存在します(例:[MMSM21, HKL16] )。これらのほとんどは、あまり簡単に定量化できない方法で大きく偏っており、一方、我々のものは偏りがないか非常に低くすることができるため、ここでは、最も密接に関連する技術にのみ焦点を当てることにします。

 Talbotら[TCE95]が開発したリサンプルドインポータンスサンプリング技術を基に、Bitterliらは直接照明用の光源サンプルに画面空間と時間のリサンプリングを適用したReSTIRアルゴリズム[BWP*20]を発表しました。彼らのアプローチは,各ピクセルに1つ以上のライトサンプルの小さなレゼバーを維持し,次に,BSDF,光源,およびバイナリ可視性項の積に近似する分布からサンプルを生成するためにレゼバーサンプリング[Vit85,Cha82]を適用します。このアルゴリズムは,サンプルの再利用とピクセル間の情報共有により,従来の最先端のライトサンプリングアルゴリズムと比較して,誤差を大幅に減少させることができます。

 間接照明は、直接照明に比べて、積分領域が本質的に複雑で高次元であるため、より多くの課題を抱えています。標準的なパストレーシングでは、局所的なBSDFによく一致する分布に従って、パスに沿った各頂点でサンプル方向を重要視するアプローチが広く用いられています。このようなBSDFサンプリングアルゴリズムが数多く開発されています。詳細はPharrら[PJH16]を参照してください。BSDFサンプリングは間接光がゆっくり変化する場合には有効ですが、強くオフピークな間接光がある場合には有効ではありません。

 間接照明が不均一な場合、入射する間接照明、またはBSDFと間接照明の積のどちらかに従ってサンプリングしようとするパスガイドアルゴリズムを使用することで、誤差を大幅に低減することができます。この分野の初期の研究としては、パストレーシングの前処理に基づいて5次元空間方向ツリーを構築したLafortuneとWillems [LW95]、パスガイドのためのJensenのフォトンマップの使用 [Jen96] [Jen95] 、HeyとPurgathoferによる多くの改善 [HP02] があります。これらのアプローチは,プリプロセスによってデータ構造を構築し,それをレンダリング時に利用するという,2パス方式です。これらのデータ構造はレンダリング中は読み取り専用であるため,GPU などの高並列アーキテクチャに適していますが,並列構築には時間がかかり,最近のアプローチに比べるとエラー低減に劣ります。

 さらに最近では,Vorba ら [VKŠ*14] と Herholz ら [HEV*16] がガウス混合モデルを適用し,レンダリング時の入射照明の表現を学習しています。Müllerらは,シーンのオクツリーへの適応的な空間分解とクワッドツリーに基づく適応的な方向分解に基づく広く利用されているアプローチを開発しました[MGN17, VHH*19]。このアプローチは Diolatzis らによって照明と BSDF の積を考慮するように拡張されました[DGJ*20]。さらにReppertらは空間分解のセル内の視差の効果を考慮し[RHL20]、Dengらは関与媒質のレンダリングにパスガイドを適用しました[DWWH20]。これらのアプローチは、大幅なエラー削減を実現することができますが、GPU上の数千のスレッドで並列にこれらの構造を構築すると、かなりの量のオーバーヘッドが発生し、リアルタイムアプリケーションには適していないようです[Pan20]。Dittebrandtらは最近、経路誘導のための、より安価でスケーラブルな方法を発表しました[DHD20]。

 ディープラーニングは、Müllerら[MMR*19]、Zheng and Zwicker[ZZ19]、Bakoら[BMDS19]など、経路誘導にも応用されています。これらのアプローチは、より効果的な経路サンプリングにより誤差の大幅な減少を実証しましたが、その性能は、学習と推論の両方で、リアルタイムアプリケーションには不十分です。

 オンライン学習の他の形態も経路誘導に適用されており、DahmとKellerの強化学習の使用[DK16]がある。Pantaleoniはこの研究を基に、オンライン学習が時空間方向ハッシュを用いて高次元の制御変量とラディアンスキャッシュをリアルタイムでうまく学習できることを示しています[Pan20]。

 経路を直接誘導するのではなく、時間(フレーム)と空間(ピクセル)をまたぐサンプル経路を再利用しています。グローバルイルミネーションにおけるパスの再利用の初期の形態は、仮想ポイントライト(VPL) [Kel97, DKH*14] に基づいています。これらの方法は光源からライトサブパスをサンプリングし,その頂点を仮想光源として再利用し,カメラから見える点を照明するものです。このアプローチは後に,より洗練された多光源法 [HPB07] と完全な双方向パストレーシング法 [PRDD15, CBH*18. TH19] を採用することで拡張されました。

 カメラから始まるサブパスの再利用に基づく、より一般的で画期的なアプローチは、Bekaertらによって記述されました[BSH02]。我々の研究はこのアプローチから多くのアイデアを得ており、実質的に同じ頂点再接続戦略を採用する一方、複雑な補助データ構造を使用せずに再利用サブパスを選択し重み付けするためにReSTIRレゼーバリサンプリングとマージングアルゴリズムを適応させました。その結果、より柔軟なアルゴリズムとなりました。Bakaertらのオリジナルアルゴリズムでは、再利用サンプルの数\(M\)で\(O(M^2)\)の多重点サンプリング(MIS)評価を必要とし、固定タイル型再利用パターン(全画素で共有するコストの一部を償却)を用いることで初めて\(O(M)\)に低減できたのに対し、我々のReSTIRベースのアルゴリズムは、任意の再利用パターンに対して\(O(M)\)の計算で済み、空間だけでなく時間の再利用も可能です。

 さらに最近では,Bauszatらが勾配領域レンダリングのアイデアを応用してパスの再利用効率を向上させ [BPE17],Westら [WGGH20] が連続MISを適用してパス空間フィルタリングアルゴリズムの偏りを低減できることを示しました [KDB14]。Westらのアルゴリズムと異なり、我々のアルゴリズムはより一般的な時空間再利用を採用し、完全にバイアスをなくすことができ、リアルタイムレンダリングとGPUアクセラレーションを明示的にターゲットにしています。

3. Background

リアルタイムレンダリングの基本的な問題は、レンダリング方程式 [Kaj86] を解くことであり、これは、純粋に反射するサーフェイスに対して、点\(x\)における方向\(\omega_o\)への放射輝度を以下のように与えます。

\begin{eqnarray}
L(x, \omega_o) = L_e(x, \omega_o) + \int_{\Omega} L_i(x, \omega_i) f(\omega_o, \omega_i) \langle \cos \theta_i \rangle d\omega_i \tag{1}
\end{eqnarray}

ここで、\(L\)は放射輝度、\(L_e\)は放射輝度、\(\Omega\)はサーフェイス法線周りの方向の半球、\(L_i\)は入射輝度、\(f\)はBSDF、\(\langle \cos \theta_i \rangle\)は方向\(\omega_i\)とサーフェイス法線の角度の余弦で,負の値はゼロにクランプされます。\(d\omega\)は立体角測度です。

 関与媒質がないという仮定の下で、入射放射輝度\(L_i\)は\(x\)から方向\(\omega_i\)のレイに沿って最初の可視サーフェイスでの出射放射輝度で書くことができます。

\begin{eqnarray}
L_i(x, \omega_i) = L_o ({\rm TRACE}(x, \omega_i), -\omega_i) \tag{2}
\end{eqnarray}

ここで、\({\rm TRACE}\)関数は、\(x\)から方向\(\omega_i\)に最も近いサーフェイス上の点を返します。従来のモンテカルロ法では、次のような推定量を用いています。

\begin{eqnarray}
{\hat L} = L_e(x, \omega_o) + \frac{1}{N} \sum_{j=1}^N \frac{ L_i(x, \omega_j) f(\omega_o, \omega_j) \cos \omega_j }{ p(\omega_j)} \tag{3}
\end{eqnarray}

ここで、\(N\)個の独立したサンプルが取られ、\(p(\omega_j)\)はサンプルが抽出された確率密度関数(PDF)です。 \(p(\omega) \gt 0\) である限り被積分関数は非ゼロで,この推定器は積分値の不偏推定値を与えます(モンテカルロ法とそのレンダリングへの適用に関する詳細については、例えばPharら[PJH16]を参照してください)。

 PDF\(p\)が被積分関数に近いほど、モンテカルロ推定量の誤差は小さくなります。リサンプルドインポータンスサンプリング[TCE05]は,直接サンプリングできない複雑な分布からサンプリングするのに有効な手法です。これは,サンプルを生成するために2パス・アルゴリズムを使用します。まず,\(M\)個の候補サンプル\({\mathbf y} = y_1, \cdots, y_M\)がソース分布\(p(y)\)からサンプリングされます。次に,ターゲットPDF \(p\) を用いて,\({\mathbf y}\) から1つのサンプル \(z\) を確率的にリサンプリングします.

\begin{eqnarray}
p(z | {\mathbf y}) = \frac{w(z)}{\sum_{j=1}^M w(y_j)} \tag{4}
\end{eqnarray}

ここで,

\begin{eqnarray}
w(y) = \frac{ {\hat p}(y) }{ p(y) } \tag{5}
\end{eqnarray}

は,サンプルの相対重みです。\(M\)が増加するにつれて、サンプルの分布\(z\)はより\({\hat p}\)に一致します。リサンプリングの目的のために、\({\hat p}\)はターゲットPDFにのみ比例する非正規化ターゲット関数に置き換えることができます。以下では、これを利用して、ターゲット関数を表す際にも\({\hat p}\)を使用することにします。

 このような\({\mathbf y}\)からリサンプリングされた\(z\)が与えられると、\({\hat p} \gt 0\)である限り、被積分関数が非ゼロの場所では,積分\(\int f(x)dx\)の不偏推定値はRIS推定量によって与えられます。

\begin{eqnarray}
{\hat L} = \frac{f(z)}{{\hat p}(z)} \frac{1}{M} \sum_{j=1}^M \frac{{\hat p}(y_j)}{p(y_j)} \tag{6}
\end{eqnarray}

ターゲットPDFが\(p\)よりも被積分関数にマッチする場合、RISはエラーを減少させます。
 
 Bitterliら[BWP*20]が示すように、重み付きレゼバーサンプリング(WRS)[Vit85, Cha82]はRISの効率的なGPU実装を導きます。参考までに、WRSアルゴリズムはアルゴリズム1に示されており、単一のサンプルでレゼバーを更新する関数と、別のレゼバーをマージする関数の両方を含み、両方のレゼバーで考慮された候補サンプルから引き出されたサンプルを得ることができます。Bitterliらに従い、我々のレゼバーはまた、レゼバーに格納されるサンプル\(z\)に対するウェイト\(W\)を格納し、次式によって与えられます。

\begin{eqnarray}
W(z) = \frac{1}{{\hat p}(z)M} \sum_{j=1}^M \frac{{\hat p}(y_j)}{p(y_j)} \tag{7}
\end{eqnarray}

従って,RIS推定器は次によって容易に評価されます。

\begin{eqnarray}
{\hat L}= f(z) W(z) \tag{8}
\end{eqnarray}

※図は,[Ouyang 2021]より引用

4. ReSTIR GI

オリジナルのReSTIRアルゴリズム[BWP*20]は、ライトPDF \(p(x)\)が、それ自身の放射強度に従ってサンプリングされるライトのサーフェイス上で一様にサンプリングするライトサンプリングを用いて、初期サンプルを配置します。ターゲット関数\(p(x)\)は次に、ライトサンプルによる影なし反射放射輝度によって与えられ、これは放射輝度、BSDF、幾何学的結合項の積によって与えられます。

 ReSTIRを間接照明のサンプルに適用するためには、間接照明に寄与する方向を表現する必要があります。この表現は、空間の異なる点での空間的・時間的再利用をサポートする必要があるため、方向の局所半球上の単位ベクトルは不都合な表現です。そこで、我々は、サーフェイス上の点と、それらが入射光線に沿って散乱して戻ってくる放射輝度を関連付けます。

 ここでは、各ピクセルでカメラから見えるシーン内のサーフェイス上の位置を可視点と呼ぶことにします。各可視点では、方向がランダムにサンプリングされ、最も近いサーフェイスとの交点を見つけるためにレイがトレースされます。これらの交点はサンプル点と呼ばれます。サンプル生成については、4.1節で詳しく説明します。サンプル点が生成された後,リサンプリングが行われ,可視点ごとにシェーディング値が計算されます(セクション4.2)。図2に直接照明用ReSTIRとReSTIR GIの比較を、図4にアルゴリズムの概要を示します。

※図は,[Ouyang 2021]より引用

※図は,[Ouyang 2021]より引用

 このアルゴリズムは、各ピクセルに以下の値を格納する3つの画像サイズのバッファを保持します。

  • イニシャルサンプルバッファ:Sample型のイニシャルサンプルのバッファ(図3)。
  • テンポラルレゼバーバッファ:ピクセルで生成された以前のサンプルにWRSを適用することでサンプルを受け入れるReservoirのバッファ。
  • 空間レゼバーバッファ:WRSを適用したサンプルを近傍のピクセルからのサンプルに受け入れるReservoirのバッファ。

※図は,[Ouyang 2021]より引用

4.1. Sample Generation

このアルゴリズムの最初のフェーズでは、可視点ごとに新しいサンプル点を生成します。我々の実装は、各ピクセルにおける可視点の位置とサーフェイス法線を持つG-バッファを入力としますが、レイトレースされたプライマリビジビリティでも容易に使用することができます。

 可視点\(x_V\)に対応する各ピクセル\(q\)について、ソースPDF \(p_q(\omega_i)\)を用いて方向\(\omega_i\)をサンプリングし、レイを追跡してサンプル点\(x_s\)を得ます。ソースPDFは一様分布、余弦重み付け分布、可視点でのBSDFに基づく分布のいずれでもよいです。(セクション 6 にそれらの比較があります)。擬似コードについてはアルゴリズム2を参照してください。

※図は,[Ouyang 2021]より引用

 各サンプル点では、可視点への正規化された方向を\(\omega_o\)とすると、放射輝度\(L_o(x_s, \omega_o)\)を計算する必要があります。この放射輝度値は様々な方法で計算することができますが、ここでは各頂点でNext Event Estimation(NEE)と多重点サンプリングを用いたモンテカルロ経路追跡を適用しています。もし、直接照明だけが放射輝度の推定に含まれる場合、我々のアルゴリズムは1バウンスのグローバルイルミネーションを計算します。一般に、パストレーシングされた\(n\)個のバウンスは、\(n+1\)バウンスのグローバルイルミネーションに対応します(図5参照)。

※図は,[Ouyang 2021]より引用

4.2. Resampling and Shading

新たな初期サンプルを採取した後、時空間的なリサンプリングを適用します。ターゲット関数

\begin{eqnarray}
{\hat p} = L_i(x_V, \omega_i) f(\omega_o, \omega_i) \langle \cos \theta_i \rangle = L_o(x_s, -\omega_i) f(\omega_o, \omega_i) \langle \cos \theta_i \rangle \tag{9}
\end{eqnarray}

は,可視点でのBSDFと余弦項の影響を含んでいますが、単純なターゲット関数

\begin{eqnarray}
{\hat p} = L_o(x_s, -\omega_i) \tag{10}
\end{eqnarray}

でもうまくいくことがわかっています。この関数は、1つのピクセルに対しては最適とは言えませんが、最初に生成したピクセル以外のピクセルで有効なサンプルを保存できるため、空間的なリサンプリングには有効であることが分かりました。

 最初のサンプルを生成した後、時間的なリサンプリングを行います。この段階では、各ピクセルについて、初期サンプルバッファからサンプルを読み出し、それを使ってテンポラルレゼバーをランダムに更新し、ソースPDFを式10で定義されるサンプル方向\(p_q(\omega_i)\)と\({\hat p}\)に対するPDFとして、式5に従ってRIS重みを計算します。時間的再サンプリングの擬似コードをアルゴリズム3に示します。

※図は,[Ouyang 2021]より引用

 テンポラル利用の後、空間的再利用が適用されます。サンプルは近傍のピクセルでテンポラルレゼーバから取得され、別の空間的レゼバーにリサンプリングされます。(擬似コードはアルゴリズム4を参照)。空間的再利用では、我々のサンプリングスキームが可視点の位置とサーフェイス法線に基づいていることに起因するピクセル間のソースPDFの違いを考慮する必要があります(オリジナルのReSTIRアルゴリズムでは、各ピクセルのローカルジオメトリを考慮せずに直接光をサンプリングしていたため、このような補正は必要ありませんでした)。したがって、ピクセル\(q\)からのサンプルをピクセル\(r\)で再利用するとき、その立体角PDFを対応する変換のヤコビアン行列式で割って現在のピクセルの立体角空間に変換しなければなりません[KMA*15、式13]。

\begin{eqnarray}
| J_{q \rightarrow r}| = \frac{ | \cos(\phi_2^r)| }{ |\cos (\phi_2^q)| } \cdot \frac{ || x_1^q – x_2^q ||^2 }{ || x_1^r – x_2^q ||^2 } \tag{11}
\end{eqnarray}

ここで、\(x_1^q\)と\(x_2^q\)は再利用パスの1番目と2番目の頂点、\(x_1^r\)は目的ピクセルからの可視点、\(\phi_2^q\)と\(\phi_2^r\)はベクトル\(x_1^q – x_2^q\)と\(x_1^r – x_2^q\)が\(x_2^q\)での法線と成す角です(図6)。図7はこの因子の重要性を示しています。

※図は,[Ouyang 2021]より引用

※図は,[Ouyang 2021]より引用

 空間リサンプリングアルゴリズムの疑似コードをアルゴリズム4に示します。これはBitterliらの[BWP*20]に従った幾何学的類似性テストを含み,サーフェイス法線が\(25^{\circ}\)以内,2つの正規化された深度が\(0.05\)以内であることを要求しています。

※図は,[Ouyang 2021]より引用

 再利用の両方のステージの後、間接照明による可視点\(x_V\)での最終的な散乱放射輝度は、RIS推定器、式6によって与えられ、空間レゼバーの\(W\)重みは、BSDF、コサイン係数、レゼバーサンプルの出射される放射輝度の積として評価される\(f(y)\)以外のすべての因子を与えています。

4.3. Bias

オリジナルのReSTIRアルゴリズムと同様に、ReSTIR GIアルゴリズムには、バイアスと非バイアスの両方の形式があります。バイアスの原因には簡単に修正できるものもあれば、より多くの処理を必要とするものもあります(例:レイのトレースなど)。性能要件によっては、性能向上とバイアスをトレードオフするために、バイアスのある変種が望ましい場合があります。バイアスは空間的および時間的なサンプルの再利用の両方から導入される可能性があり、我々は順番にそれぞれを検討します。

 直接照明用のReSTIRと同様に、空間リサンプリングは、異なるピクセルで異なるソースPDFが使用されるという事実により、バイアスが発生する可能性があります。別のピクセルのレゼバーからサンプルが再利用され、そのピクセルのソースPDFが現在のピクセルのドメインをカバーしない場合、推定結果にバイアスが発生します。このバイアスは,可視光線を追跡して,最終的に選択されたサンプルをサンプリングできるソース分布をチェックし,それに応じて結果を重み付けすることによって完全に修正することができます[WP21].(このテストはアルゴリズム4の18行目にあります)また,ピクセル間の幾何学的類似性テストを含めることによって,レイをトレースすることなく,バイアスを減らすことができます。

 図9は、バイアスドなサンプルとアンバイアスドなサンプルの再利用を比較したものです。この図では、ターゲット関数を出射光の放射輝度とし、BSDF項を拡散成分と鏡面成分の両方を含むものとしています。バイアスは主に視認性変化による影領域で発生しています。なお、グロッシーな床は、光沢成分を含むターゲット関数は、残念ながら複雑な視認性変化が起こる反射方向周辺に多くのサンプルを配置する傾向があるため、バイアスを悪化させます。

※図は,[Ouyang 2021]より引用

 空間的再利用によるバイアスを減らすもう一つの方法は、アルゴリズム4で行われたように、空間レゼバーが近傍ピクセルからのテンポラルレゼバーのみに対して動作し、空間レゼバーに対しては動作しないようにすることです。この方法では、バイアスドなサンプルをリサンプリングする複数のパスによって、バイアスが蓄積されることはありません。しかし、テンポラルレゼバーのみを使用した場合、新たに除外されたピクセルは十分なサンプルを収集できない可能性があり、その結果、目に見えるノイズが発生します。このような場合、入力サンプル数の少ない空間レゼバーが近くの空間レゼバーを再利用できるようにし、収束速度を向上させます。図10に全体のデータフローを示します。

※図は,[Ouyang 2021]より引用

 4.2 節で述べたように、ReSTIR GI は BSDF サンプリングにより、ソース分布が各ピクセルの局所的なジオメトリに依存するため、バイアスが生じることがあります。面積測度に関して同じ分布でも、ピクセルの立体角空間が異なれば、その形は異なります。この違いを考慮せずに他のピクセルのサンプルを再利用すると、バイアスが発生します。このバイアスは式 11 を評価することで簡単に補正することができ、計算量が少ないことを考えると、この要素を入れない理由はありません。

 照明やシーンの形状がフレームごとに変化する場合、時間的再利用により、サンプル点に格納された出射放射輝度値が不正確になると、バイアスが発生する可能性があります。この問題は、ReSTIRの特性として、比較的明るいサンプルは、交換される前に何フレームもレゼバーに保持される傾向があるため、間接照明の更新に顕著な遅れが生じる可能性があり、さらに悪化します。この問題を軽減するために、我々はA-SVGFノイズ除去フィルター[SPD18]にヒントを得たサンプル検証機構を適用します。数フレームごとに、すべてのレゼバーサンプルの出射放射輝度を再計算するためにレイをトレースし、結果の放射輝度が与えられた許容範囲にあるかどうかをチェックし、そうでない場合はレゼバーをクリアします。(この段階では、サンプルが最初に生成されたときに使用されたのと同じ乱数がランダムサンプリングに使用されることが重要です)。サンプル検証のためのフレーム間隔は、シーンのダイナミックさによって調整することができます。

 動的なシーンにおけるテンポラルバイアスのもう一つの原因は、サンプル点が最初に生成された後に、可視点とサンプル点の間のレイをブロックするオクルーダーから生じる可能性があります。このバイアスは、サンプル検証時に可視点からサンプル点へのシャドウレイをトレースすることで修正することができます。

5. Implementation

このアルゴリズムは、Unreal Engine 4とFalcor [BYC*20]で実装されています。Unreal Engine 4 の実装では、初期 G-バッファはラスタライズを使用して生成され、フルスクリーンパスによって各可視点に対して新しいサンプルが生成されます。Falcorの実装も同様ですが、G-バッファを生成するためにレイトレーシングを使用しています。時間的および空間的なリサンプリングは、後続のフルスクリーンパスで処理されます。時間的リサンプリングは、前のフレームからのモーションベクトルに従って再投影されたピクセルを使用します。時間的再投影が失敗した場合は、空間的再投影を行う前に、空間的レゼバーとテンポラルレゼバーの両方をリセットします。

 効率化のために、この実装では、サンプル点での散乱放射輝度の方向性の変化を無視します。その代わりに、元の可視点への方向の散乱放射輝度は、Lambertian散乱に対応し、すべての方向に対して使用されます。そのため、サンプル点が元々生成された可視点とは異なる可視点に接続された場合、サンプル点のBSDFが純粋な拡散でない場合、エラーが発生することがあります。この単純化では、可視点のBSDFがLambertianである必要はなく、間接パスの後続の頂点でLambertian散乱が必要なわけでもないことに注意してください。

 空間リサンプリングがデータ競合なしに他のピクセルの時間バッファにアクセスできるように、時間バッファと空間バッファの両方にダブルバッファを使用しています。このため、間接照明に 1 フレームの遅れが生じますが、高フレームレートでは問題ありません。

 オフチップメモリに保存するため、SAMPLE構造体のサーフェイス法線は4バイトに圧縮され、出射放射輝度には半精度浮動小数点が使用されます。各レゼバーは48バイトのストレージを必要とします。初期レゼバーを1つ、ダブルバッファリングにより空間レゼバーとテンポラルレゼバーの両方に2つ使用すると、1080pの解像度での総所要メモリは(他の用途に必要だと思われるGバッファを除いて)475MBとなります。約570MBの帯域幅が各フレームのレゼバーからのデータ読み出しに、285MBがレゼバーの更新をメモリに書き込むのに使用されています。

 実際には、すべてのフレームのすべてのピクセルで長いパスをサンプリングすると、パフォーマンスに大きな影響を与える可能性があります。そのため、25%のピクセルにおいてのみ、マルチバウンスパスを追跡します。そうすると、スレッドコヒーレンシーが低いため、性能はかなり低下しますが、良い結果が得られます。そこで、画面を\(64 \times 32\)ピクセルのタイルに分割し、タイル単位でロシアンルーレットを適用します。ロシアンルーレットテストで不合格になったタイルは、シングルバウンス間接パスを使用してレンダリングされ、サンプルポイントでの直接照明を計算するだけです。合格したものはマルチバウンスパスに従いますが、ロシアンルーレットの確率を使用して再重み付けされます。このように、すべてのパスの期待値はマルチバウンスパスのものとなります。実際には、時間的・空間的なリサンプリングの確率的な性質により、タイルパターンはうまく隠蔽されます。

 テンポラルレゼバーでは\(M\)を30に、空間的レゼバーでは500に固定し、\(M\)が大きくなってもレゼバーが特定のサンプルで固まり、それを置き換えることができなくならないようにしています。

 与えられたフレーム間隔における空間レゼバーバッファからのすべての出力サンプルを検証します。最初のサンプリングパスを再利用してサンプル検証を行うので、余分な性能コストは発生しません。サンプル検証フレームでは、初期サンプリングパスがサンプル情報を読み取り、同じレイをトレースして放射輝度値を検証します。デフォルトでは、6フレームごとにサンプルの検証を行います。

 空間リサンプリングアルゴリズムのmaxIterationsパラメータは、性能に大きな影響を与えます:値を大きくすると収束が速くなりますが、アルゴリズムのコストも高くなります。実際には、サンプル数が少ないレゼバーは一般にノイズレベルが高く、アーチファクトの原因となる可能性があるため、各ピクセルの空間レゼバーのサンプル数に応じてmaxIterationsを設定します。サンプル数が空間レゼバーの最大 \(M\) 値の半分以下のときは、maxIterations を 9 に設定し、そうでないときは 3 に設定します。

 また、空間リサンプリングアルゴリズムに使用する探索半径も画質に影響します。その値を高く設定しすぎると、幾何学的複雑性の高いシーンの受容率が低くなることがあり、逆に低く設定しすぎると、低周波ノイズが発生することがあります。最適な値はシーンの深度の複雑さに大きく依存するため、適応的な探索戦略を使用します。具体的には、初期半径を画像解像度の10%に設定します。空間再利用の際、別のピクセルのサンプルが再利用可能で、空間レゼバーに提供される場合、半径は変更されないままです。それ以外の場合は、半径を半分にし、最小探索半径である3ピクセルまで下げ、その値を維持します。

6. Results

様々なシーンでReSTIR GIを評価し、その効果を測定しました。すべての測定はNVIDIA RTX 3090 GPUを使用して行われ、明示的に指定された場所以外では、どの画像もデノイズされていません。また、トーンマッピング以外の後処理は行っていません。タイミング測定は、ReSTIR GIアルゴリズムに費やされた時間として報告されており、他のパスは総時間の30%未満を占め、Gバッファ生成はフレームあたり1ms未満を使用しています。比較のために使用したパストレーサーは、直接光照明ににNext Event Estimation使用し、間接レイを生成するためにBSDFサンプリングを使用した標準的なパストレーサーです。そのパストレーサーを用いて、1ピクセルあたり8192サンプルのリファレンス画像を計算しました。

 図8は、シングルバウンスとマルチバウンスのグローバルイルミネーションの違いを示したものです。マルチバウンスは、強い太陽光に照らされた屋内シーンの照明結果を大幅に改善することができます。ここでは、セクション5で説明したアプローチに従って、マルチバウンスはタイルの25%でのみ計算されます。このシーンは\(1920 \times 1080\)の解像度でレンダリングされ、1バウンスのグローバルイルミネーションだけを考慮すると、レイのトレースと初期サンプルの保存に3.2msかかりますが、2バウンスの場合は4.2ミリ秒で32%コストが増加します。両ケースともリサンプリングに4.6msを要します。リサンプリングを含む総フレーム時間は14msです。

※図は,[Ouyang 2021]より引用

 サンプル検証を行うことで、動的な照明があるシーンでのテンポラルバイアスを効果的に抑制することができます。図11では、太陽光が急激に変化した後、サンプル検証を行わないアルゴリズムでは、壁に古いサンプルが残ってしまい、間違ったライティングになっています。サンプル検証を行うことで、すべての古いサンプルが棄却され、アルゴリズムは新しいライティングに迅速に適応します。しかし、新しいサンプルを使ってライティングを過大評価するため、バイアスはまだ存在します。

※図は,[Ouyang 2021]より引用

 図12は、Unreal Engine 4.25のデフォルトの時空間デノイザーを用いて、通常のパストレーシングとReSTIR GIによるノイズ除去の効果を示しており、時間的蓄積に続いて空間フィルタリングとポストフィルタリングが実行されます。パストレース画像はノイズ除去後も低周波数のノイズが目立つのに対し、ReSTIR GIではノイズが大幅に減少し、コンタクトシャドウの詳細が保持されています。

※図は,[Ouyang 2021]より引用

 図13は、180万から830万トライアングルの複雑なシーンにおいて、標準的なパストレーシングとほぼ同じ時間で収束するアルゴリズムを比較したものです。標準的なパストレーシングがノイズの多い結果を出すのに対して、我々のアプローチは豊富な照明のディテールを捉えることに成功しました。ReSTIR GIでは、32フレームの時間的リサンプリングを行った後の画像を掲載しています。ReSTIR GIは、バイアスのかかったバージョンでは14.6倍から141倍、バイアスのないバージョンでは9.3倍から166倍のMSE低減を実現しています。添付のビデオでは、ダイナミックライトと移動するカメラのシーケンスに対する改善効果を示しています。

※図は,[Ouyang 2021]より引用

 ReSTIR GIアルゴリズムのバイアスは、主に近傍ピクセルの視認性変化によるものです。図9は、バイアスドな空間再利用とアンバイアスドな空間再利用の結果を示しています。しかし、空間再利用の結果は、影領域でバイアスが見られ、これは影領域外のレゼバーを再利用することで発生するものです。幾何学的類似度の比較では、これらのレゼバーを無効化することはできません。さらに、光沢反射成分も床面のバイアスを悪化させます。

 また、初期サンプリング方法やターゲットPDFの選択も結果に影響します。初期サンプルに一様半球サンプリングを用いると、特にグレージング角からの光に対して、cosine-weightedサンプリングよりも分散が小さくなることがわかりました。この場合、光軸方向のサンプリング確率が低いため、余分な分散が発生します(図14参照)。さらに、式9の散乱放射輝度ではなく、出射放射輝度(式10)のみを使用すると、分散は大きくなりますが、より安定した結果が得られることがわかりました。

※図は,[Ouyang 2021]より引用

6.1. Limitations

ReSTIR GIのコストは、特にローエンドのGPUを使用する一部のリアルタイムアプリケーションにとっては、まだ高すぎるかもしれません。たとえば、ほとんどのビデオゲームでは、30fpsを超えるパフォーマンスが期待されていますが、通常、グローバルイルミネーションには2ms以下の計算予算しか認められていません。このような場合、レゼバーバッファの解像度を下げて、計算を減らすことができます。しかし、この場合、ディテール法線マップがあると、空間再利用が不安定になる可能性があります。ライティングの詳細を保存しながら安定性を改善するために、我々は深度バッファから幾何学的法線を計算し、球面調和関数を使用してライティングを記録し、最終的に元の法線を使用して完全な解像度で詳細を回復する初期実験を行いました。

 サンプルレゼバーを保存するためにスクリーンスペースのバッファを使用すると、簡単にサンプリングして更新できるデータ構造になりますが、この表現には欠点があります。カメラが高速に移動している場合、新しく表示されるピクセルのサンプリングが不十分で、良好な結果が得られないことがあり、その結果、高いノイズが発生することになります。さらに、シーン内に完全鏡面反射オブジェクトがある場合、スクリーンスペースは最適な表現ではない可能性があります。完全鏡面反射オブジェクトがカメラに直接見える場合、カメラからの光線経路に沿って見える最初の非鏡面オブジェクトを可視点とする必要があります(ノイズ除去で一般的に行われているのと同様)。この場合、近傍のピクセルにある可視点はシーン内で近くにない可能性があるため、空間再利用はあまり効果的でない可能性があります。

 また、光沢の強い表面を持つマルチバウンスグローバルイルミネーションでは、我々のアプローチは有効ではありません。この場合、サンプル点でのランバート散乱の仮定が不正確であるだけでなく、あるピクセルで大きな寄与をするサンプル点が、他のピクセルの鏡面反射のピークローブの外にある場合があるので、空間サンプルの再利用が非常に効果的でなくなります。間接照明が少数の方向に集中している場合、空間的・時間的再利用を行ったとしても、効果的なサンプリングが困難な場合があります。

 最後に、時間的・空間的な再利用により、ReSTIR GIアルゴリズムは相関のあるサンプルを出力します。つまり、各フレームのサンプルはある程度前のフレームのサンプルと類似しています。しかし、多くの時空間デノイザーはその入力が独立であると仮定しています。例えば、有名なSVGFデノイザー[SKW*17]は、各ピクセルの第一および第二モーメントを計算し、それを使って空間フィルタの帯域幅を調整するために分散を推定します。相関のある入力は、分散とその結果の帯域幅の推定が不正確であるため、アーティファクトを引き起こす可能性があります。

7. Conclusion and Future Work

レゼバーを用いた時空間的なリサンプリングは、間接照明のサンプリングに非常に有効なアルゴリズムにつながることを示しました。我々のアプローチは、パストレース間接照明のエラーを大幅に削減し、現在のGPUでリアルタイムフレームレートで複雑なシーンのために実現可能にします。パストレーシングと比較して、フレーム時間への影響は限定的ですが、私たちの技術で最大166倍のMSEの減少を示しました。 

6.1節で述べたように、画面空間の空間リサンプリングには多くの課題があります。まず、最も重要な課題は、光輸送経路に沿った非ランバーシアン散乱事象をより効果的に処理する能力です。また,今後の課題として,サンプルポイントを生成する他の方法を検討することも興味深い方向性です。我々のアプローチは、可視点からランダムに方向をサンプリングすることでサンプル点を見つけますが、光源から始まる経路をトレースすることで見つけることも可能でしょう。シーンによっては、このサンプリングアプローチの方がより効果的かもしれません。また,仮想点光源に基づく手法[DKH*14]などと我々のリサンプリング手法を組み合わせることで,間接照明のサンプリング方法がさらに広がるかもしれません。

Acknowledgements

Aaron Lefohn, David Luebke, Calvin Linのサポートに感謝します。図 7、8、11、12 の Unreal Engine 4 のシーンと図 13 の 3 番目のシーンは Quixel Megascans のもので、図 1 のものと図 13 のその他のシーンは Evermotion のものです。図14のUnreal Engine 4 scceneは、Matima Studioのものです。これらはすべて、Unreal Marketplace から入手することができます。図9のシーンは、NVIDIA Falcor [BYC*20]でレンダリングされた[Ast16]のものです。