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

ベイク処理を実装した。
上の画像が出力されたテクスチャ。
下の画像がそのテクスチャをモデルに貼りつけたもの。
総フォトン数1万、放射輝度推定に用いたフォトンは各テクセル100個ずつ。
p10k_n100_v100_t
p10k_n100_v100
なんだか鉛筆の下書きに絵の具で色を塗ったように見える。
エッジが鉛筆で書いたように見えるのは多分テクスチャの隙間のせいだから、ベイクのときにその隙間を埋めるような処理を追加すれば解決するかも。
絵の具っぽく見えるのは、多分トーンマッピングの処理がテキトーなせい。

続きを読む

いまXcodeでOpenGLを使ったGPUコンピューティングをはじめる方法

OpenGLに慣れてれば簡単だと思うけど、慣れてないと難しいと思う。
この辺はやはりCUDAとかのGPGPU用のAPIに比べると、必要な手続きが多過ぎる感がある。
1から作る場合はCUDAの方が明らかに楽だけど、ターゲット環境の問題とかでCUDAを選択出来ないときや、すでにOpenGLを使ってるアプリに組み込むときOpenGLでGPGPUをやるのもいいと思う。

続きを読む

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

シーンにばら蒔いたフォトンを元にシーン内のある点の放射輝度推定を行うとき、レイトレースがよく用いられると思う。
カメラからスクリーンの画素の方向へレイを飛ばし、そのレイがぶつかった物体表面に関して放射輝度推定を行うのだ。

続きを読む

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

フォトンマップ(kd木)を実装した。
動作確認として、カメラから画面中心に向かってレイを飛ばし、物体とぶつかった地点pからいちばん近いフォトンTOP10をkd木を使って検索し、pから各フォトンの位置に線を引くようにしてみた。
線の色はフォトンの色に対応。
いつもの如くリアルタイムでグリグリ動くけど、画面録画がキビしいので静止画だけ。
前回と比べ見栄え的には後退したけれど、実装的には大きな一歩となった。

続きを読む

ちょっと脱線

ちょっといじってたら面白い映像が得られた。

続きを読む

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

フォトンの着弾点(拡散面に吸収された位置)を可視化してみた。

続きを読む

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

言語はC++、ベクトルや行列の演算には OpenGL Mathematics (GLM) という mathematics library を使ってとりあえず実装をはじめた。
mathematics library って訳すと数学ライブラリ? 数値計算ライブラリだとなんかちょっと違う種類になるよね。

続きを読む