グローバルイルミネーション

少し前から「グローバルイルミネーション」を作ってみようと思い、勉強を始めたがやはり実装しながら試行錯誤した方が自分にはあっている。
 
さて、あまり聞きなれない言葉だとおうが、、、物理モデルに基づいて計算されたCGと言うことが出来るが物理的には光の相互反射を正確に計算することでいわゆるCGとは違って現実に近い画像を作成できる。というシロモノ。
 
従って計算には物理的パラメータに依存する。例えば屈折率だとか反射率とか。
基本的な計算方法は比較的簡単な理屈で、外界から来る光子というか光線1本が様々な反射や屈折、吸収などを経て目(カメラ)に届く。これを全部計算してやればよい(パストレーシング)。
目は赤、緑、青(RGB)に強く反応するため届いた光はRGBで一つずつ記録される。これが画像になるという仕組みだ。
 
とは言っても計算は非常に厄介な積分
イメージ 1
吐き気がするわけだが手間を掛けて紐解けばプログラムに出来る。問題はfrの部分。
 
現状は以下のような画像が生成されるのが精一杯だ。
イメージ 2
 
作り始めると問題は山積み。
金属光沢の仕組み
膨大なポリゴンとレイの計算効率化をどうするか?
そもそも屈折って波長毎に違うのでは?
等々。