自作レンダラ

ここしばらくはここを更新するのを意識的にやめていた。
なんでか。今作ってる自作レンダラが、せめて少しでも見られる画像を作られるようになるまではと思って。

去年度までに作っていたレンダラが、フォトンマップ(最後フォトンを集めるとこにパストレしてる・・・ファイナルギャザ?)までできたんだが、一気にそこまで作ってしまったため、何が遅いのかわからなくなってしまい、コードの書き方も統一性がなくて、いやになってしまったため、書き直しを3月くらいからはじめていたというわけ。

それで、今の状況はやっと画像が出せるようになりました。
GIなんかまだまだ先です。しかし前回の失敗から、見栄えはしなくても基礎の部分をしっかり作ることを念頭にしています。

開発言語はC++
プラットフォームはWindowslinux両方。このためできるだけシステム依存のコードはレンダリングのロジックとは切り離している。
大容量のデータを扱えるようにするため、大きな配列構造はすべてFileMappedMemory(linuxではmmap)で。速度的に問題はない。
メッシュの構造は今のところ荒いUG+オクツリー。

下画像はstanfordのdragon,871414ポリゴン。P4-2.4GHzにて構築7秒、レンダリングに1200*1200、一次レイのみで2秒。
いまだ光沢表現すらできなくて、まともなシェーダーもないが、かまわない。とりあえず今は速く、でっかい画像が作れればいい。

とりあえず、単独でasian dragonぐらいまでならレンダリングできる。lucyはlinuxだとよろしくない。windowsならOK。
問題はむしろ、*.plyをwc,head,tailとawkで手動で編集してること*1。来週rplyを使って組み込もう。
やっとメッシュ構造がひと段落着いたが、もっと速く出来る気がする。
次はせめてクラシックなフォンモデルくらいは用意しようと思う。その後、曲面を直接扱えるようにしよう。
GIにたどり着くまでにどれくらいかかるんだろう・・・

*1:いやぁUNIXって便利だね