日記

未だグダってます

ここ1週間ぐらいまとまったコードはあまり書いてないので書くネタがなかった。

smallppm.cppを改造してフォトンの照射を半球コサイン比例分布から半立方体表面一様分布に変更してうまく行くかどうかを試したりしてた。
半立方体表面一様分布だとフォトンの密度がおかしな事になるので、そのままでは結果もおかしくなってしまうんだけど、フォトン出力を補正して擬似的に密度を補正する事によって最終的な結果が正しくなるところまでは確認した。
ただ、同じフォトン数なら実行時間はオリジナルとさほど変わらないんだけど、収束が4倍ぐらい遅くなったので実質4倍遅くなった状態。
(各フォトンの出力を同じぐらいに揃えておく事の統計学的な意味における重要性を思い知った。)

なんでこんな実験をしたかというと、フォトンのトレースにGPUを使う場合に、いくつかのフォトンをまとめてパケットトラバーサル?フラスタムトラバーサル?したら高速化するだろうなぁという目論見があって、フォトンを半立方体表面一様分布にすればフラスタムの生成が楽だろうなぁと思ったため。

この方法で複雑な形状の面光源による直接照明は結構高速に近似可能だと思うけど、しかし、間接照明も全部それでやろうとするといくらGPUで高速に処理したとしても全体ではかなり時間が掛かるはず。
ということで間接照明を高速化するためにインスタントラジオシティ系(Reflective Shadow MapsやImperfect Shadow Maps等)の論文を読んでたけど、めんどくさそうでどうすんべかという状態。

もう基本的なPPMに戻って、フォトントレースだけを(パケットトラバーサルとかせずに)GPUで処理してそこそこ高速化するだけでいいんじゃないかという気がしてきた。
全部CPUで処理しても数分あればそれなりの画になってたわけで、GPU使って1分以内で処理できるならそれでいい。

コメントを残す

メールアドレスが公開されることはありません。



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

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