Filter Importance Sampling

by syoyo

Filter Importance Sampling
M. Ernst, M. Stamminger, G. Greiner,
RT06
http://doi.ieeecomputersociety.org/10.1109/RT.2006.280223

簡単な要約

レイトレでのピクセルサンプリングでは、
サンプル点の分布はリコンストラクションフィルタ(Mitchell とかね)の重みを考慮していない.
そこで本手法では、リコンストラクションフィルタの分布からサンプル点を
インポータンスサンプルで生成する手法を提案し、MC ノイズが 50% ほど減ることを示しています.

# リコンストラクションフィルタの関数に従ってサンプル点を分布させるのは、
# なんか前からあったような気もしないでもないですが.

問題定義

通常のレンダリングでは、レイトレなどでサンプリングをした後、
そのサンプル群からリコンストラクションフィルタで各サンプルを重み付けして最終的なピクセル色を求めます.

このとき、サンプルの値が大きくても、それに対応するリコンストラクションフィルタの重みが小さくて、
最終的なピクセル色へのサンプルの寄与が小さくなることがあります.

たとえば論文では、となりあうピクセルで、強いライティングからのサンプルが、
一方のピクセルではフィルタ重みが小さいので寄与が小さく、
他方のピクセルではフィルタ重みが大きいので寄与が大きくなり、
結果として分散が大きくなってノイズとなることを例として取り上げています.
(とくに 1 pixel あたりのサンプル数が 64 などと少ないとき)

提案されている解決方法

問題は、リコンストラクションフィルタの分布が考慮されていないためです.
そこで本論文では、リコンストラクションフィルタの分布にしたがって
サンプル点をインポータンスサンプリングして生成し、
重みはすべて同じ(=box filtering)とすることで、
このような現象に対処して既存手法より 50% のノイズ減少が可能であることを提案しています.

リコンストラクションフィルタにしたがってサンプル位置を生成するので、
たとえばフィルタ幅がピクセル幅を越えている場合は、
ピクセルをはみでるサンプルもでてくることに注意します.

私的考察

手法としてはリコンストラクションフィルタにしたがってサンプル位置を分布させるだけなので、
実装は容易なほうでしょう.

しかし、問題は、これはリコンストラクションも込みの関数からのインポータンスサンプリングなので、
リコンストラクションフィルタがあらかじめ決まっている必要があるということです.

プロダクションなどでの利用では、サンプリングとピクセルリコンストラクションは
分離していたほうが良い気がします.
(コンポジット時にサンプル点の Z 値を使うとか, ピクセルになる前の情報が必要だと思うので)

本手法はリコンストラクションフィルタが bake されていてもよい、
という用途では有効と言えるでしょうか.

Advertisements