水鳥コンビナート

CGとかUnityとか

Importance Caching for Complex Illumination

Importance Caching for Complex Illumination

EUROGRAPHICS 2012 の論文。

ある点がシーン中全ての VPL から受ける寄与を計算する際に、 少ない数の VPL を確率的にサンプリングすることで効率的にその近似を行うとする。 このとき、 遮蔽の多いシーンでは特に重要なことだが、 寄与の大きい VPL を優先的にサンプリングする必要がある。 この論文は疎な点群で VPL に対する重要度を計算してキャッシュを作成し、 レンダリング時には周囲のキャッシュから補間を行うことで任意の点について VPL の重要度を計算するという方法を示している。

以上で要点を大体書ききってしまったような気もするが詳細。

ある点 x が VPL 群  R_k からの光を反射して発する輝度  L_x^o は、 VPL から受ける明るさやら BRDF やら幾何項やら可視関数やらを含んだ  f_x(R_k) を使って

 L_x^o \approx \sum_{k=1}^{N_{VPL}} f_x(R_k)

として表される。(点光源なので輝度が無限だったりサンプリング確率がゼロだったりしてワチャワチャするがとりあえず何かしらの関数  f_x になる)

そして、その値を離散値についてのモンテカルロ推定で求めると以下のようになる。

 \tilde{L}_x^o = \frac{1}{n} \sum_{m=1}^n \frac{f_x(R_m)}{p_x(R_m)}

例の如く  p_x(R_m) f_x(R_m) に完全に比例させれば分散ゼロになって有り難いのだが、 その  p_x を求める計算量は結局  L_x^o を求めるのと一緒になってしまう。 そこで、適当な割合の点 x についてのみ完全な  p_x を計算し、 その他の点については周囲の  p_x を MIS で混ぜて使い計算してやることにする。 以下、この計算済みの点を Importance Record (IR) と呼び、その位置を  I_j と表記する。

まず、近傍の IR を  M 個求めるが、 この際の距離関数は  d(x,I_j) = ||x-I_j|| + \lambda \sqrt{1-N_x\cdot N_{I_j}} としている。要するにユークリッド距離が近く法線の方向が似ている点同士が近い。

あとは  M 個の戦略を MIS で混ぜればオッケー、という訳ではなく ここで更に下図のように近傍の IR と  x の遮蔽条件が異なっているパターンを色々と考えてやる。 a) はそのまま使って問題ないパターン、b) は可視関数による false negative/positive のパターン、 c) は幾何項による false negative のパターン、d) は全く補間が効かないパターンである。 (ちなみに、false positive は結局 VPL の選択後の可視判定で弾かれるため大きな問題にはならないが、 false negative は寄与の大きな VPL を無視する可能性があるので対策が必要)

f:id:mizuooon:20170826223636p:plain

そして、それぞれについて対策になりそうなサンプリング戦略を考える。 これは順に、 そのまま  f_x と比例した  p を使う  \mathcal{F}、 可視関数を無視して  p の計算を行う  \mathcal{U}、 幾何項の上限を取って計算する  \mathcal{B}、 (近傍の情報があてにならないので) 全ての VPL から平等にサンプリングを行う  \mathcal{C} である。

結局、  M 個の IR について 4 つの戦略を考えるため、  4M 個の戦略を MIS で合体させることで最終的な  p_x が求められる。 この際、IR 間の戦略の結合はバランスヒューリスティクスを用いる一方、  \mathcal{FUBC} のサンプリング戦略の結合については、 あくまで局所最適な戦略のため、 パワーヒューリスティクスやマックスヒューリスティクスを用いるのがポイントらしい。

ついでにこの論文では マックスヒューリスティクスの拡張として  \mathcal{FUBC} の各戦略に重みをもたせた α-マックスヒューリスティクスというのを提案している。 ただ最適な値がシーンによって明らかに違う気がするのであまりイケてる印象ではない。

結果としては全体的に単なるパストレや direct importance visualization (知らない)、 instant radiosity、 resampled importance sampling あたりよりもいい感じになっている。 ただし遮蔽が少なかったりマテリアルがグロッシーな場合には補間が効きにくいためにエラーが大きめになっている。