renderBitch作者によるレンダラ実装Tips

http://renderedrealities.net/portfolio/renderBitch.pdf

  • Photon Map用Kd-Treeの作成はすべてのフォトントレースが終わってから。

当たり前?PBR本でもJensen本でもそうなってるよね?

  • Photon Map作成時光源からのサンプルをStratifiedにする。

フォトンマップにみられるclump(フォトンが不当に集まっちゃってできるダマ)が完全にStochasticに生成されたサンプルだと出やすい為、らしい。

  • 分光の実装

Spectral Rendererではないため、ちょっと偽っぽい手法。
フォトンが屈折面に当たった際、赤青緑フォトンのどれかをランダムに放出するようにする。
(確率はたとえば赤の場合R/(R+G+B)とかそんな感じで)

ガウスフィルタを使った改善。
Global Photon Mapだったら結構フォトン探索半径固定でもいけるっぽいという話と、Caustics Photon MapだとどうしてもAdaptiveな手法が必要になるよね、という話。
また、探索半径を自動的に調節する手法の解説。画像全体で必要なフォトン探索に必要な最大半径はそこまで変わらないだろうという仮定をおいて、前回の探索で出てきた最大半径(たぶん+α)を次の探索で使えばいいよという話。また、もしぜんぜん足りなくてやり直す場合でも、倍々に増やしていくよりも、前回の試行での密度で予測してやれば一発でできるよという話。M個のフォトン探しててa×M個しかみつからなかったら次の試行での探索半径r_2{r_1}/sqrt{a}。あと、最初の予想で使う探索半径は大きめのほうが、小さめのフォトン探索半径で失敗して徐々に大きくしていくより計算コストが小さいらしい。

こういう実装に近い視点は参考になるなぁ。nytrに組み込めそうなアイデアがいくつもあるので、また実装してみよう。

編集@2006/11/18:さりげなく数式を直す