Real Time Ray tracer

最近はCPU上で動作するRay tracerを開発中。
未踏が終わってしばらくした後、とりあえずoctreeを実装してみたけどあまり速くならなかった。各ノードに子ノードへのポインタを持たせないことによってメモリを節約しキャッシュ効率が少し上がるような設計にしたつもりが、結局ノード数が無駄に多くなってしまった。
今は自分で考えたアルゴリズムを実装中。そんな事する前にBVHやkd-treeを実装して勉強したり、自分のアルゴリズムとパフォーマンスを比較できるようにしたほうがいいのかもしれないが。

リアルタイムレイトレといえば、ドイツにあるSaarland大学の研究が凄い。
http://graphics.cs.uni-sb.de/index.html
レイトレ専用チップを開発したり、Quake4をリアルタイムレイトレーサでレンダリングしたりしている。
http://q4rt.de/
リアルタイムレイトレもそこそこ使えるようにはなっているが、やはり現在のGPU+ラスタライズを置きかえるほどには速くない。
上記のQuake4はCore 2 Extreme QX6700でも16fpsぐらいの速さ(画面サイズが256x256で)なのでかなり我慢すれば遊べるかもしれないが、普通のGPUだと安くてより高いfpsが得られる。
gpuppurでそれらに対抗できるようなレンダラを開発するのはかなり難しいけど、いつの日にかリアルタイムレイトレーシングが主流になる日が来ることを信じてこつこつ開発中。
でも、レンダラを作るのはとても楽しい。

もうじきIPAX2007が開催されるわけだが、未踏ユース最終発表会の終わりの言葉のときにIPAの人が是非IPAXに出展して下さい、というような事を言っていたので出ることにした。
申し込みの時,展示する物のみどころを書く欄にてきとうに"ヌルヌルのリアルタイム レイトレーシング"と書いた。後から変更できるらしいので、もっといい言葉を考えてから決めようと考えていた。しかし気がついたときには変更できる期限を過ぎていた。みどころがこんなに短くわかりやすい(?)のは私だけのようだ。

リアルタイム3Dでfpsが一桁ぐらいの状況をカクカク、逆にfpsが30以上のスムーズに表示されている状況をヌルヌルって言うことがあるが、IPAXまでにそんなリアルタイム レイトレーサを作れるだろうか。
とりあえず、表面がヌルヌルしているように見えるレイトレーサはここのdemoプログラムとして用意しておいた。