レイトレーサーを作ってみました

2月末に仕事を辞めて以来、ろくに転職活動もせず時間が余っていたので、少し大きめのプログラムに取り組もうと思いレイトレーサーを作ってみました。先月からC++でコードを書き始めて約2週間、ようやくそれらしい結果が出力できるようになりました。下の画像はパストレーシングによって100パス/ピクセルで計算したもの。ノイズが大変多くて画質が非常に悪いです。しかもオブジェクトを空間分割して管理していないため、レイとの交差判定を総当たりで行っているので、このような単純なシーンをレンダリングするだけで5分以上もかかっています。なので、今は画質の向上やら処理速度の高速化やらやりたい事が山積み。まだまだこれからですね。

開発にあたっては、レンダリング方程式からパストレーシングに至るまでアルゴリズムの理解に大変時間がかかりました。学生の頃にOpenGLを利用したプログラムを作ったことがあってCGの知識は多少あったのですが、全体的に分からないことばかりで苦労しました。それに書籍やウェブの情報だけを頼りにしているので、自分の理解の正しさに全く自信が持ててません。コードをレビューしてくれたり気軽に相談できる仲間が側に欲しいところです。どこかCGの研究室に潜り込めないかな。
当面の方針は、レンダリングの主要なアルゴリズムの理解に努めることにして過度な最適化は行わず、なるべくシンプルで素直なリファレンス実装を目指したいと考えています。性能を追い求めると、結局、最後は作り直すことになると思うので。ある程度コードがまとまってきたら、GoogleCodeのプロジェクトに登録して公開したいと思います。