技術

フォトンベイカー(仮)進捗その9

現時点でこんな感じ。
t100000_m80_s50_2
総フォトン数は10万、推定に使ったフォトン数は各80個。

まだまだおかしいところがあるけど、前回までの絵画っぽい感じと比べるとフォトンマッピングっぽさが出てるきがする。

前回から変わった部分は

  1. レイトレーシングで直接照明を計算し、フォトンマップは間接照明だけに使うようにした
  2. フォトンの反射率の計算や反射後の出力の計算、放射輝度推定の方法を変更した

1. についてはそのまんま。
強いて言うなら、物体表面の位置と法線はテクスチャとして持ってるので、カメラからレイを飛ばす普通のレイトレースじゃなくて、いきなり物体表面から光源にレイを飛ばして明るさを計算してる。

2. については Simon’s Tech Blog: Photon Mapping Part 1 に載ってた式を参考にした。
ただ、その中の p(ωo) が具体的になんなのかよく分からなかったので、適当に2π(単位半球の表面積)とした。
そのせいで、フォトンの反射率や反射後の出力の計算が合ってなくて、それが最終的な画にも現れてるんじゃないかと思う。
たぶん反射方向に依存した何かなんだろうな。

そのあたりを修正しつつ、今後ファイナルギャザリングも実装しようと思う。
やはりフォトンマッピングだけだと計算に時間がかかりすぎる。

しかしファイナルギャザリングって物理的にはどういう意味を持つんだろうか。
普通にフォトンマッピングによる間接照明の結果と足していいんだろうか。
もしくはフォトンマップから直接”間接照明”を計算しないようにして、ファイナルギャザリングでフォトンマップを参照して間接照明を計算するのかな。

あと、最終的に直接照明の結果と間接照明の結果を合わせるときに、間接照明の結果をどのくらいスケールすればいいのかがいまいち分からない。
例えばフォトン数1万で、最終的なスケールを1/50とすると、フォトン数10万のときはスケールを1/500にすれば同じくらいの明るさになるのは分かってるけど、具体的にスケールがどのくらいであれば物理的に正しいのかがいまいち分からない。

まぁこのあたりはまだフォトンの反射率や反射後の出力の計算が合ってない可能性があるうちに深く考えても仕方ないが。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です



※画像をクリックして別の画像を表示

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください