Slide 1

Slide 1 text

フォトンマッピングをパス空間 から考える @yumcyawiz レイトレ合宿9

Slide 2

Slide 2 text

フォトンマッピング 双方向光輸送アルゴリズムの1つ 集光模様の表現に強い SDSパスが表現可能 SDSパス 集光模様

Slide 3

Slide 3 text

フォトンマッピングのアルゴリズム 1. フォトントレーシング 2. 視点からのトレーシング 光源からのパスと視点からのパスを "緩く" 繋げる

Slide 4

Slide 4 text

青い本 フォトンマッピングで有名な本(通称: 青い本) 前半は物理ベースレンダリング周りの基礎知識の 習得に最適 後半はフォトンマッピングだが分かりにくい・・ アルゴリズムがモンテカルロ積分の形で表され ていない 😦 青い本の説明の例 位置 周辺のフォトン密度に関係する が含まれている. 物体 表面が位置 付近で局所的に平らであると仮定することによっ て, 球面を物体表面に投影し, … L ​ (x, ) ≈ r ω ​ f ​ (x, ​ , ) ​ p=1 ∑ n r ωp ω ΔA ΔΦ ​ (x, ​ ) p ωp (7.4) x ΔA x

Slide 5

Slide 5 text

モンテカルロレイトレーシング モンテカルロレイトレーシングでは 光輸送方程式 (LTE) をモンテカルロ積分する フォトンマッピングのアルゴリズムもこのような 形式で表せないか? フォトンマッピング ​ f(x)dμ(x) ≈ ∫ P ​ ​ ​ N 1 i=1 ∑ N p(x ​ ) i f(x ​ ) i

Slide 6

Slide 6 text

カーネル関数近似 カーネル関数: 積分して1となるような関数 カーネル関数近似: 点 の値を 周辺の値を使って近 似 ガウシアンカーネル ​ K(x)dx = ∫ R 1 x x f(x) ≈ ​ K(∥x − ∫ R3 y∥)f(y)dy K(x) = ​ exp(− ​ x ) ​ 2πσ2 1 2σ2 1 2

Slide 7

Slide 7 text

3点形式のLTE L ​ (x → o 1 x ​ ) = 2 ​ L ​ (x ​ → ∫ M i 0 x ​ )f(x ​ → 1 0 x ​ → 1 x ​ )G(x ​ , x ​ )dA(x ​ ) 2 0 1 0

Slide 8

Slide 8 text

3点形式のLTE(カーネル関数近似) カーネル関数近似の適用 L ​ (x ​ → o 1 x ​ ) = 2 ​ ​ K(y, x ​ )L ​ (x ​ → ∫ M ∫ M 1 i 0 y)f(x ​ → 0 y → x ​ )G(x ​ , y)dA(x ​ )dA(y) 2 0 0

Slide 9

Slide 9 text

3点形式のLTE(緩い接続) 緩い接続の適用 L ​ (x ​ → o 1 x ​ ) = 2 ​ ​ K(y, x ​ )L ​ (x ​ → ∫ M ∫ M 1 i 0 y)f(x ​ → 0 y, x ​ → 1 x ​ )G(x ​ , y)dA(x ​ )dA(y) 2 0 0

Slide 10

Slide 10 text

経路積分形式のLTE I ​ = j ​ L ​ (x ​ → ∫ M4 e 0 x ​ )G(x ​ , x ​ )f(x ​ → 1 0 1 0 x ​ → 1 x ​ )G(x ​ , x ​ )f(x ​ → 2 1 2 1 x ​ → 2 x ​ )G(x ​ , x ​ )W ​ (x ​ → 3 2 3 e j 2 x ​ ) 3 dA(x ​ )dA(x )dA(x ​ )dA(x ​ ) 0 1 2 3

Slide 11

Slide 11 text

経路積分形式のLTE(緩い接続) 緩い接続の適用 I ​ = j ​ L ​ (x ​ → ∫ M5 e 0 x ​ )G(x ​ , x ​ )f(x ​ → 1 0 1 0 x ​ → 1 y)G(x ​ , y)K(y, x )f(x ​ → 1 2 1 y, x ​ → 2 x ​ )G(x ​ , x ​ ) 3 2 3 W ​ (x ​ → e j 2 x ​ )dA(x ​ )dA(x ​ )dA(y)dA(x ​ )dA(x ​ ) 3 0 1 2 3

Slide 12

Slide 12 text

経路積分LTE(緩い接続)のモンテカルロ積分 : 光源側からのパス : カメラ側からのパス (x ​ , x ​ , y) 0 1 (x ​ , x ​ ) 3 2 I ​ ≈ j ​ ​ N 1 i=1 ∑ N p(x ​ )p(x ​ ∣x ​ )p(y ∣x ​ )p(x ​ ∣x ​ )p(x ​ ) 0 i 1 i 0 i i 1 i 2 i 3 i 3 i L ​ (x ​ → x ​ )G(x ​ , x ​ )f(x ​ → x ​ , → y )G(x ​ , y )K(y , x ​ )f(x ​ → y , x ​ → x ​ )G(x ​ , x ​ )W e 0 i 1 i 0 i 1 i 0 i 1 i i 1 i i i 2 i 1 i i 2 i 3 i 2 i 3 i e j

Slide 13

Slide 13 text

経路積分LTE(緩い接続)のモンテカルロ積分 フォトンのThroughput カメラ側からのレイのThroughput β ​ = i ​ p(x ​ )p(x ​ ∣x ​ )p(y ∣x ​ ) 0 i 1 i 0 i i 1 i L ​ (x ​ → x ​ )G(x ​ , x ​ )f(x ​ → x ​ , → y )G(x ​ , y ) e 0 i 1 i 0 i 1 i 0 i 1 i i 1 i i T ​ = i ​ p(x ​ ∣x ​ )p(x ​ ) 2 i 3 i 3 i G(x ​ , x ​ )W ​ (x ​ → x ​ ) 2 i 3 i e j 2 i 3 i I ​ ≈ j ​ ​ β ​ K(y , x ​ )f(x ​ → N 1 i=1 ∑ N i i 2 i 1 i y , x ​ → i 2 i x ​ )T ​ 3 i i

Slide 14

Slide 14 text

フォトンマッピング 予め光源側からのパスを 個生成しておくと… 光源側から放たれたフォトンの総数: カメラ側からのサンプル数: 密度推定(Density estimation) と呼ばれる式 青い本だと以下の式に対応 フォトンマッピング N ​ p N ​ p N I ​ ≈ j ​ ​ ( ​ ​ β ​ K(y , x ​ )f(x ​ → N 1 i=1 ∑ N N ​ p 1 p=1 ∑ N ​ p p p 2 i 1 p y , x ​ → p 2 i x ​ ))T 3 i i L ​ (x, ) = r ω ​ ​ f ​ (x, ​ , )ΔΦ (x, ​ ) πr2 1 p=1 ∑ N r ωp ω p ωp (7.6)

Slide 15

Slide 15 text

フォトンマッピング 一般化すると I ​ ≈ j ​ ​ ( ​ ​ β ​ K(y ​ , x ​ )f(y ​ → N 1 i=1 ∑ N N ​ p 1 p=1 ∑ N ​ p p s(p) p t(i) i s(p)−1 p y ​ , x → s(p) p t(i) i x ​ ))T ​ t(i)−1 i i β ​ = p ​ ​ p(y ​ ) 0 p L ​ (y ​ → y ​ )G(y ​ , y ​ ) e 0 p 1 p 0 p 1 p ​ p(y ∣y ​ ) ∏k=1 s(p) k p k−1 p ​ f(y ​ → y ​ , → y ​ )G(y ​ , y ​ ) ∏k=1 s(p)−1 k−1 p k p k+1 p k p k+1 p T ​ = i ​ ​ ​ p(x ​ ∣x ​ ) ∏k=1 t(i) k i k−1 i ​ f(x ​ → x ​ → x ​ )G(x ​ , x ​ ) ∏k=1 t(i)−1 k+1 i k i k−1 i k+1 i k i p(x ​ ) 0 i G(x ​ , x ​ )W ​ (x ​ → x ​ ) 1 i 0 i e j 1 i 0 i

Slide 16

Slide 16 text

まとめ フォトンマッピングの肝は 緩い接続 カーネル関数近似によって緩い接続を表現 の値を周辺の値から計算 経路積分形式のLTEにカーネル関数近似を適用 モンテカルロ積分 → フォトンマッピング より複雑なアルゴリズムを考えることができる? 緩い接続を1点だけではなく, 複数点で行うなど f(x)

Slide 17

Slide 17 text

おまけ(フォトンマッピングの実装に必要なもの) 光源側からのレイトレーシング BSDFの非対称性 シェーディング法線 フォトンのThroughput の計算 カメラ側からのレイのThroughput の計算 点 において となるような近傍フォトンを探す仕組み Uniform grid, Octree, Kd-tree, Spatial hashing, etc… β ​ p T ​ i x K(x) > 0

Slide 18

Slide 18 text

おまけ(レンダリング結果) カーネル近似の誤差によるアーティファクトが目立つ 😦

Slide 19

Slide 19 text

おまけ(フォトンマッピング) ナイーブな実装ではアーティファクトが目立つ 😦 Final gathering, PPM, SPPM フォトンマップを格納するのに大量のメモリが必要 😦 PPM, SPPM ボリュームにも対応可能 😆

Slide 20

Slide 20 text

おまけ(SPPM) 各Iterationでフォトンマップ生成, カメラ側からのトレーシングを繰り返す Iterationを増やしていくと誤差が0に近づいていく(Consistency)

Slide 21

Slide 21 text

おまけ(SPPM(Volume)) ボリュームにも対応可能 😆

Slide 22

Slide 22 text

References Jensen, Henrik Wann. Realistic image synthesis using photon mapping. AK Peters/crc Press, 2001. https://pbr-book.org/3ed- 2018/Light_Transport_III_Bidirectional_Methods/Stochastic_Progressive_Photon_Mapping# Jensen, Henrik Wann. "Global illumination using photon maps." Eurographics workshop on Rendering techniques. Springer, Vienna, 1996. Veach, Eric. Robust Monte Carlo methods for light transport simulation. Stanford University, 1998. Hachisuka, Toshiya, Jacopo Pantaleoni, and Henrik Wann Jensen. "A path space extension for robust light transport simulation." ACM Transactions on Graphics (TOG) 31.6 (2012): 1-10.