円柱と光線の交差判定

レイトレーシングにおける円柱との交差判定を考える。
ウェブや本などでいくつかの記述例があるが、それは大抵、複雑であるか、軸がY軸もしくはZ軸に固定であるかのどちらかだろう。
以下ではすっきりと記述でき、if文だらけにならず、なおかつ軸を固定しない手法をあげる。
本手法は、判定時に光線を変形する。これにより非常にきれいに記述することが出来る。

続きを読む

フォトン・シャドウマップ

フォトン・シャドウマップ的なものを実装した。シャドウ・フォトンマップではない。

参考用にレイトレースシャドウ

レンダリング時間は点光源×3で
上:5秒
下:7秒
と少し速い。ライトが多くなればもっと差がつくだろう。

んが、前処理がかかりやがる。上の画像でフォトンを約400万くらいとばして、20秒くらい。それなりのクオリティが必要なら、もっと・・・。正直ダメジャンと思った。
・・・まあ独自にもの考えてもろくなことはないわけで、残念な感じ。
フォトンの飛ばしには乱数とか低食い違い列とか試したんだけど、うまく制御できないので(つうかまったく理論がわかってないので)、正20面体の再起分割を使った。わるくない。モンテカルロ法に対する、区分求積法なのかなあ・・・

以下は残念な感じ

失敗だけどきれいだったので

フォトンマップ


フォトンを何も考えず最近隣だけ取ってレンダリングするとボロノイ分割の模様が現れるんだな。

無理やりフィルタの図。ほんとはこんなことをしてはいけない。

もっとだめなフィルタリング。

フォトンマップ構造は意外と簡単に出来る。
けど、今のところGIにすぐ行くつもりはない。GIには魅力を感じない。
シミュレータではなく、絵作りの道具としてレンダラを考えているためだ。
フォトンマップを影生成の高速化手法に利用できないか、模索したいと考えている。
何通りも方法はある。
シャドウマップの延長線で考えた方が良いかもしれない。

  • フィルタ幅はレイとの交差点と光源との距離によって可変にするべき。
  • 点光源には向いていない。
  • フォトンがなかったらどうするか?
  • フォトンの扱いは?
  • 輝度推定をshaderと切り離すには・・・