グローバルイルミネーション(34) SSS

SSS(sub surface scattering)
実装してからしばらくたつけど気に成っている点を修正。

bssrdfによる実装が高速らしいが、まだ論文の幾つかの式がが理解できない。
現在の実装は素直に散乱をシミュレーションしているのである意味物理的だが問題点もある。
その一つが完全に閉じたソリッドで無いと駄目。
つまり、鏡面とかPhongとか拡散面は全て表面だけで計算出来るが現在のやり方だとSSSは
中身のあるソリッドである必要がある。
しかし、これはこれで新たな問題がある。それは散乱過程は必ず物体の中である必要がある。
なのでいつも散乱イベントではその点が物体の中かをチェックする必要がある。
しかし、この問題はレイを飛ばしたときに物体の裏にヒットしていれば保障されるので差ほど大きな問題では無い。
と思っていたが、、、
SSS物体の中に別の物体が埋め込まれている場合はそういう話には成らない。
つまり、物体の中かをチェック方法は面倒になる。

しかし、bssrdfであれば表面だけで解決できそうなのでそろそろbssrdfも真面目に実装に取り組もうかなぁ。

一応、SSS物体の中に別の物体が埋め込まれている場合もOKなように改良した。
結果も正しそう、、、な気がする。