フォトンマッピングを試す

2009-10-12

Photon mapping 1

レイトレーサーを作るシリーズ:フォトンマッピング

フォトンの放射kd-treeを組み合わせてフォトンマッピングを作ってみる
  • フォトンパス:20万フォトンを放射して、拡散反射のロシアンルーレットで最終的に約65万フォトンが記録される
  • レイパス:ピクセルごとに視点からレイを撃って、交差した近傍100個のフォトンから放射輝度を推定、色を塗る

なんかあまりきれいにならない…

  • 推定用フォトンの数を大きくするとノイズは薄れるけど、本来クッキリするはずの影がぼやけてしまう
  • 法線が異なっていてもはじいてないので、壁のへりで色がおかしくなっている
  • Proce55ingのヒープの設定的に、放射するフォトンの数は20万個くらいが限界
  • 「フォトンマッピング」本、図7.4の擬似コードで、最後に放射輝度を出すところでΣfluxを2πr^2で割ってるけど、円の面積だからπr^2じゃないのか?(式(7.5)~(7.7)では全てπr^2だし)
  • フォトンが運んでいるのは放射束で、放射輝度じゃないんだ!ということに驚いた(違いはよーわからんのだけども)
  • 65万個ともなるとkd-treeの構築に結構時間がかかる
  • 近傍探索は気にならないくらい速いけど、推定フォトン数を増やすと時間がかかるようになる。O(k+log n)だそう

放射輝度推定のフォトン数を1にしてやると、ボロノイ図みたいな絵ができてちょっと面白い

Photon mapping 2

そのまま放射フォトン数を上げるとパストレしたような画像になってまた面白い

Photon mapping 3