Slide 1

Slide 1 text

SVGF: Spatiotemporal Variance-Guided Filtering Yoshi’s Dream

Slide 2

Slide 2 text

SVGFとは 画像は[1]より引用

Slide 3

Slide 3 text

SVGFのやっていること ・レイトレーシング完了(ここでG-Bufferの生成) ・Temporal Accumulation ・Variance estimation ・分散のフィルタリング ・Edge-avoiding a-trous wavelet transform ・(Temporal Anti-Aliasing)

Slide 4

Slide 4 text

SVGFのやっていること 画像は[1]より引用

Slide 5

Slide 5 text

SVGFの目的 ・リアルタイムレイトレをしたい >> サンプル数はそれほど大きくできない >> 情報不足に悩まされる ・利用できる情報はないか? >> 周辺画素の情報,過去の情報を利用してみる >> Spatio-Temporal

Slide 6

Slide 6 text

G-Buffer ・1次レイの交差面における情報を記録 >> Albedo >> Normal >> Depth >> ObjectID >> Motion Vector: 現在の情報と過去の情報をリンクする

Slide 7

Slide 7 text

現在の情報と過去の情報をリンクする N N+1 一つ前のフレームでは見えない => 情報なし => リンク不可 一つ前のフレームにて可視 => リンク可 => 情報の再利用(実質サンプル数を増やす) Data? hoge Data? No I have some data

Slide 8

Slide 8 text

Temporal Accumulation ・1次レイの交差点は一意に定まる >> 一つ手前のフレームにおける輝度(ColorHistory)を再利用 >> 実質サンプル数を稼げる >> G-Bufferを用いて1つ前のフレームの情報を得る >> 静的なシーンに限定される >> Detached Shadows in Motion Color ? hoge

Slide 9

Slide 9 text

Temporal Accumulation 例えばLambert Diffuse サンプル数が2になった!

Slide 10

Slide 10 text

Variance estimation ・注目しているピクセルにおける輝度の分散を推定 (i) 過去の情報が利用可能な場合 >> 過去の輝度 and レイトレの結果得られた輝度 (ii) そうでない場合 >> 注目しているピクセルの周辺の輝度

Slide 11

Slide 11 text

Variance estimation (i) 過去の情報が利用可能な場合 ・ 過去のE[X^2] と E[X]を読み込む ・レイトレの結果得られた放射輝度(Radiance)を用いて  輝度(Luminance)と輝度の2乗を計算 ・過去のE[X^2], E[X]とミックスして現在のE[X^2], E[X]を得る ・式に代入 E[X], E[X^2]? hoge

Slide 12

Slide 12 text

Variance estimation (ii) 過去の情報が利用不可能な場合 ・7x7のBilateral Filterを作用させて推定 ・Edge-stopping functionを使用してさらに重みづけ >> Normal, Depthに限る >> Bilateral Filterの重みにそれぞれの重みを乗算(hx * hy * wn * wz) No E[X], E[X^2]? E[X], E[X^2]? No. Too small SampleNum

Slide 13

Slide 13 text

Edge-stopping function ・平等な平滑化フィルターをやる >> 輪郭がぼやけてしまう......特徴に沿わないフィルタリング...... ・カーネル作用位置の画像上における距離が遠いほど重みを小さくすれば良い? >> バイラテラルフィルタ,ガウシアンフィルタ ・では他の類似特徴を利用できないのか? >> 今回のEdge-stopping function

Slide 14

Slide 14 text

Edge-stopping function - Normal ・Normalに関するEdge-stopping function ・注目する2点における法線ベクトルの内積をσn乗する(論文値: σn = 128) ・すなわち,法線ベクトルのなす角が大きければ小さい重みを返す >> 法線ベクトルの「類似度」で重み付け

Slide 15

Slide 15 text

Edge-stopping function - Depth ・Depth: カメラと交差点の距離 ・論文値: σz = 1 ・「床と机」関係の区別? ピクセル座標 p p+1 depth 分母のabs部分 分子のabs q

Slide 16

Slide 16 text

Edge-stopping function - Luminance ・分子: 輝度の差 ・分母: 分散マップを3x3 Gaussian Filter に通したものの平方根にσl (論文値4) ・注目点での輝度分散が大きい => 重み大 >> 分散の小さいところをキープ ・2点間の輝度の差が大きい => 重み小 >> 影などのシーン要因特徴を保持

Slide 17

Slide 17 text

Edge-avoiding a-trous wavelet transform ・分散の推定が終わり,画像のフィルタリングを行う ・大きな範囲でカーネルを使いたい >> 計算量の増加 >> カーネルサイズNについて,O(N^2) ・穴の空いたカーネルを使おう(stride: 2^n) >> A-trous Filter >> 計算量は一定

Slide 18

Slide 18 text

Edge-avoiding a-trous wavelet transform ・複数段のiterationがある(5段?) ・iterationが進むごとにカーネルサイズ (故にstride) を大きくする ・Variance estimationと同様にEdge-stopping functionを使用 ・iterationごとに画像の色,輝度の分散もフィルタリングする(次iterationで利用) ・iteration1の結果をColorHistoryに保存する >> 次のフレームでのTemporal Accumulation

Slide 19

Slide 19 text

SVGFのやっていること(再掲) 画像は[1]より引用

Slide 20

Slide 20 text

SVGFの問題点 ・Specularなどの成分に関しては上手くできない ・Temporal Accumulationは静的なシーン限定 ・光源パスの少ない箇所では上手くいかない 等々 画像は[1]より引用

Slide 21

Slide 21 text

発展手法 いろいろあるみたいです. ・A-SVGF ・ReLax ・ReSTIR -GI?(最近よく聞く) ・勉強します

Slide 22

Slide 22 text

参考文献 [1] Christoph. S. et.al. Spatiotemporal Variance-Guided Filtering: Real-Time Reconstruction for Path-Traced Global Illumination 2017. [2] shocker-0x15 SVGF (Spatiotemporal Variance-Guided Filtering) https://qiita.com/shocker-0x15/items/f928898730498c7a52c7 (Last Access 2023/09/01) [3] shikihuiku Spatiotemporal Variance-Guided Filtering: Real-Time Reconstruction for Path-Traced Global Illuminationを読んでみた https://shikihuiku.wordpress.com/2018/04/21/spatiotemporal-variance-guided-filtering-real-time-reco nstruction-for-path-traced-global-illumination%E3%82%92%E8%AA%AD%E3%82%93%E3%81%A 7%E3%81%BF%E3%81%9F/ (Last Access 2023/09/01)

Slide 23

Slide 23 text

おわり ありがとうございました.