超雑訳 World-Space Spatiotemporal Reservoir Reuse for Ray-Traced Global Illumination

こんこよ~。Pocolです。
今日は,
[Boissé 2021] Guillaume Boissé, “World-Space Spatiotemporal Reservoir Reuse for Ray-Traced Global Illumination”, SIGGRAPH Asia Technical Communications, No.22, pp.1-4, 2021.
を読んでみようと思います。
いつもながら誤字・誤訳があるかと思いますので,ご指摘頂ける場合は正しい翻訳と共に教えて頂けると大変ありがたいです。


※図は, [Boissé 2021]より引用

ABSTRACT

複雑な照明を持つシーンのパストレースされたグローバルイルミネーションは、リアルタイムフレームレートでは特に難しいままです。ライトサンプリングのためのレゼバーベースのリサンプリング法は、ピクセルあたりの非常に少ないシャドウレイのコストで、大幅なノイズ低減を可能にします。しかし、レゼバー再利用に対する現在のスクリーン空間アプローチは、間接照明を効率的に評価するために必要な、さらなるバウンスでの照明のサンプリングには拡張できません。
 我々は、ワールド空間においてレゼバーベースの時空間重要度再サンプリングを行う新しいアプローチを提示し、視線パスに沿った任意の頂点における効率的なライトサンプリングを可能にします。本アプローチでは、経路頂点のリザーバを、GPU上に構築されたハッシュグリッドのセルにキャッシュします。このような構造により、空間と時間を超えて隣接するレゼバーを確率的に再利用することができ、空間の任意の点における効率的な時空間リザーバ再サンプリングが可能になります。

1 INTRODUCTION

最近、Reservoir-based spatiotemporal Importance Resampling (ReSTIR) [Bitterli et al. 2020]が、レイトレースされた直接照明のための複雑なシーン照明のサンプリングのためのいくつかの面白い改良を導入し、Rearchitecting Spatiotemporal Resampling for Production [Wyman and Panteleev 2021]ではさらに最適化され、ゲームなどのリアルタイムアプリケーションでの使用に適した技術となっています。
 ReSTIR GI [Ouyang et al. 2021]は、間接照明にたいして興味深いノイズ低減を達成するために、経路自体をリサンプリングするというグローバルイルミネーションのためのアルゴリズムの拡張です。しかし、このアプローチは、ReSTIRが直接照明に対して行うほど効果的に二次頂点の照明分布をサンプリングすることはできません。
 高速経路空間フィルタリング[Binder et al. 2018]は、空間ハッシュを使用して、1回のグリッド検索でワールド空間の領域内のすべての隣接経路頂点を効率的に見つけることを提案しています。
 最後に、[Jarzynski and Olano 2020]は、GPU上で実行される多くのハッシュ関数の性能を比較する研究を発表し、与えられた品質レベルで最速のハッシュ関数を選択できるようにしました。
 我々は、[Binder et al. 2018]の経路空間フィルタリングアプローチとReSTIRのライトサンプリングを組み合わせて、二次経路頂点でレゼバー再利用を行うことを提案します。複雑なシーンの間接照明における大幅なノイズ低減をもたらす、1回のキャッシュルックアップで効率的な再利用を達成するために、ハッシュグリッド構造を適応させる方法を説明します。

2 PRELIMINARIES

ReSTIR技法は、Resampled Importance Sampling (RIS) [Talbot et al. 2005]とWeighted Reservoir Sampling (WRS) [Chao 1982]により、隣接するピクセル間でサンプリング決定を共有することで、複雑なシーンの直接照明において重要なノイズ低減を実現します。
 直接照明サンプルは、質の悪い分布\(p\)から\(M\)個のサンプル\(x_i\)を描画し、それを質の高い分布\({\hat p}\)に対してリサンプリングすることで、画面上の各ピクセルに対して生成されます。[Bitterli et al. 2020]は,サンプリングしやすい分布として\(p\)に対してパワーサンプリングを使用することを提案していますが,最初のサンプル生成の品質を向上させるために,他のどのようなライトサンプリング技法も使用できることに注意することは興味深いことです。\({\hat p}\)については,通常,シェーディングに使用されるライティング関数\(f\)にできるだけ近い分布にしたいものです。しかし,\(f\)を正確に計算するには,可視性項を評価するためにレイをトレースする必要があり,これは法外に高価です。その代わりに,我々は\({\hat p}\)を,可視性を含まない完全なライティング項として定義することができます,そうでなければ影のない照明として知られているものとして定義することができます。この処理により、アルゴリズム1に示すように、各ピクセルの初期レゼバーを生成することができます。

※図は, [Boissé 2021]より引用

 レゼバーの興味深い特性は、計算効率を保ちながら、2つの入力ストリームをリサンプリングしたのと数学的に等価な1つのWRS操作で、それらを互いに組み合わせることができることです。これにより、スクリーン空間の空間と時間を超えてレゼバーを再利用することで、隣接ピクセル間の相関を効率的に活用することができます。

3 WORLD-SPACE RESEVOIR CACHING

レゼバーの再利用をさらにパスの頂点まで広げるには、ワールド空間で隣接する頂点を効率的に見つけるメカニズムが必要です。経路空間フィルタリングは、セル内のすべての値を平均化することによって放射輝度サンプルのフィルタリングを実行するために、ハッシュグリッドの使用を導入しています[Binder et al. 2018]。このアプローチはGPUの超並列性に特に適しており、レゼバーキャッシュの良い候補となります。しかし、レゼバーの再利用のために、頂点近傍内の複数のレゼバーを再結合して、ストリームされたサンプルの高カウントを達成し、適切にノイズを低減したいものです。
 我々はデータ構造を変更し、ハッシュグリッドの各セルにリザーバーのリストを格納することを提案します。後述するように、これによってワールド空間のパス隣接間でレゼバーを効率的に共有することが可能になり、低いパフォーマンスオーバーヘッドで大量のストリームサンプルを達成することができます。この構造をGPU上で効率的に構築するために、アルゴリズム2に示すように、処理をステップに分割しました。

※図は, [Boissé 2021]より引用

 Incrementing the per-cell counters. 各経路の頂点\(v\)に対して、ハッシュグリッド内のセルインデックスを解決し、セル内のレゼバーの数をアトミックにインクリメントします。さらに、アトミック操作の返り値を保存します。これはセル・スト レージ内でリザーバを散布するインデックスであり、index_in_cell と呼びます。append_buffer に <\(v\), cell_index, index_in_cell> のトリプレットを追加することで、必要な情報をすべて保存します。

 Parallel prefix sum. セル・カウンターに対して並列prefix sum演算を行い、結果を index_buffer に書き込みます[Harrie et al. 2007]。

 Scattering the reservoirs into a compacted stream. レゼバーは、cell_storageバッファー内のそれぞれの場所にスキャッターされます。これは append_buffer に格納されたトリプレットをロードすることで行われます。index_buffer から cell_index を読み込んでセルの base_offset を取得し、これに index_in_cell を加えてレゼバーをスキャッターするメモリ位置を取得します。メモリ帯域幅を節約するために、レゼバーのインデックスだけをスキャッターすることに注意してください。

4 WORLD-SPACE SPATIOTEMPORAL RESERVOIR REUSE

我々は[Bitterli et al.2020]と同様に時空間リザーバーの再利用を行いますが、近隣のレゼバーを見つけるためにスクリーン空間カーネルではなく我々のハッシュグリッドを使用します。時間的再利用では、単純に最後のフレームからハッシュグリッドを保持し、以前のレゼバーを再利用します。
 ハッシュ・グリッド・キャッシュからレゼバーを再利用する最も明白な方法は、現在のパス頂点のセル・インデックスを解決し、セル内のすべてのレゼバーに対して重み付きレゼバーサンプリングを実行することです。しかし、これは図2に示すように、隣接するすべての頂点が同じレゼバーのセットを再利用するため、強い視覚的アーティファクトを生じます。このようなタイリングのアーティファクトは、構造化ノイズを生成する傾向があるため、レンダリングの文脈では特に望ましくありません。さらに、セルは、与えられた空間の領域に着地するパスの頂点の数に応じて、様々な数のレゼバーを含むことができ、再利用時のパフォーマンスが低下する可能性があります。

※図は, [Boissé 2021]より引用

 Stochastic reservoir reuse. その代わりに、セル内のレゼバーを確率的に選択し、レゼバーリストから max_count 要素のランダムなサブセットだけをリサンプリングします。これは、各グリッドセル内のリストが平坦化されているため、どの要素にもランダムにアクセスすることができます。確率的なレゼバーの再利用は、図2に示すように、タイリングのアーティファクトを崩壊させるのに役立ちます。

※図は, [Boissé 2021]より引用

 Jittered descriptors. [Binder et al. 2018]と同様に、レゼバーキャッシュの挿入とルックアップの両方で、ハッシュグリッドディスクリプターをジッターさせます。これは、ハッシュグリッドを挿入または検索する前に、タンジェント平面内のパス頂点の位置をセルサイズに比例して単純にジッタリングすることで実装します。これにより、タイリングのアーティファクトが崩され、フィルタリング可能なノイズ除去に適したノイズになります。

 Adaptive cell size. 距離が離れると、セルの投影サイズは小さくなり、複数のレイに当たる可能性が低くなるため、レゼバーが利用できなくなり、リサンプリングの質が低下します。我々はセルの定義を変更し、適応的なセルサイズを適用し、ピクセル単位でほぼ一定の投影サイズを得ることを目指します。
 我々は、空間\(v\)の与えられた位置と、垂直視野fovYラジアン、幅×高さピクセルのセンサーサイズを持つ、目の位置に配置された仮想カメラに対して最適なセルサイズを計算する、アルゴリズム4に記載された式を導出します。min_cell_size はワールド空間での最小セルサイズを表し、projected_size はピクセルに投影した目標セルサイズを表します。

※図は, [Boissé 2021]より引用

 
 図3は、セルサイズを適応させた場合とさせなかった場合の比較で、効果的な再利用に利用できるレゼバーが不十分なため、遠距離でノイズが増えることを強調しています。

※図は, [Boissé 2021]より引用

 Bias reduction. オリジナルのReSTIRアルゴリズムは、再利用時に深度と法線情報を使用して隣接するレゼバーをフィルタリングし、バイアスによる過剰な暗転を軽減することを提案しています。我々のハッシュグリッドの場合、グリッド上のセルからサンプリングするため、空間的な近接性が保証されます。したがって、各レゼバーを生成するために使用されるワールド空間の法線のみを保存し、再利用時に頂点の法線と比較します。法線があまりに異なる場合は、図4に示すように、レゼバーをスキップして次のレゼバーに進み、画像に導入されるバイアスの量を減らすのに役立ちます。

※図は, [Boissé 2021]より引用

5 IMPLEMENTATION AND RESULT

我々は、シングルバウンス拡散グローバルイルミネーション(GI)のためのワールド空間ReSTIRを実装しました。我々は、ブルーノイズ[Heitz et al. 2019]を使用して半球の余弦重み付けサンプリングによってプライマリ可視サーフェイスからGIレイを生成します。次に、16個の初期サンプルをリサンプリングしてレゼバーを生成し、その結果をハッシュグリッドに挿入します。
 
Inserting into the hash grid. 空間ハッシュを使用すると、異なるセルに解決されるべきワールド空間の2つの異なる位置が同じインデックスになってしまうというコンフリクトが発生する可能性があります。この問題を解決するために、私たちは二次的なハッシュ関数を使い、32 ビットのチェックサムを計算します。このチェックサムをセル内のすべてのエントリと比較し、正しいメモリ位置を見つける。我々の実装では、100,000個のセルを割り当て、各セルに最大32個のエントリーを許容します。さらに、我々は[Jarzynski and Olano 2020]による研究を活用し、一次ハッシュ関数(\(h1\)と呼ぶ)としてpcg()を、二次ハッシュ関数(\(h2\)と呼ぶ)としてxxhash32()を使用することで、良好なエントリ分布が得られることが分かりました。

※図は, [Boissé 2021]より引用

 ハッシュグリッドを検索するために、atom_cmpxchg()を使わず、単純に各エントリーを目的のチェックサムと比較する、アルゴリズム5に記載された関数のバリエーションであるFindCell()を定義します。

 Results. 我々は、1つの時間的および4つの空間的なワールド空間の再利用パスを使用して、1080pから半分の解像度でレンダリングされた拡散グローバルイルミネーションで我々の技術をテストしました。再利用のmax_countを4に設定し、図5に示すように、シーンの間接照明の大幅なノイズ低減を達成しました。

※図は, [Boissé 2021]より引用

 ピクセルあたりわずか1/4サンプルとワールド空間リサンプリング技術により、多数のエリアライトを含む複雑なシーンでリアルタイムレベルのパフォーマンスを実現します。表1にアニメーションの1フレームに対するワールドスペースReSTIRのオーバーヘッドを示します。

※図は, [Boissé 2021]より引用

6 CONCLUSION

我々は、空間ハッシュを使用してワールド空間にリザーバーをキャッシュする新しい方法を提示しました。この手法により、二次頂点におけるライトサンプリングのための、効率的なレゼバーベースの時空間リサンプリングが可能になり、間接照明計算にわずかなパフォーマンスオーバーヘッドで大幅なノイズ低減をもたらすことを示しました。

 Limitations and future work. 我々はシングルバウンスグローバルイルミネーションのためにワールド空間ReSTIRを実装しました。将来的には、ハッシュグリッドをフレームごとに再構築するのではなく、更新して、パスがバウンスするときに頂点を追加できるようにしたい。最終的には、ハッシュ・グリッド構造をダイレクトライティングサンプリングにも使用し、すべてのイルミネーションに単一の統一されたレゼバーキャッシュを使用することを視野に入れています。最後に、我々のアプローチは、[Wyman and Panteleev 2021]によってもたらされたReSTIRの改善と、[Ouyang et al. 2021]によって提示されたパスのリサンプリング技術の両方とうまく組み合わせることができるはずです。

REFERENCES