Raytracing curved surface.

by syoyo

カーブつながりということで、最新の曲面のレイトレ処理についての研究を紹介します.

nurbs_raytracing.jpeg
O. Abert, M. Geimer, S. Mueller,
Direct and Fast Ray Tracing of NURBS Surfaces.
Proceedings of the 2006 IEEE Symposium on Interactive Ray Tracing, pp. 161-168, Salt Lake City, UT,September 18-20, 2006.
http://www.fz-juelich.de/jsc/JSCPeople/geimer-pub

    
subdiv_raytracing.jpeg
Carsten Benthin, Solomon Boulos, J Dylan Lacewell, and Ingo Wald,
Packet-based Ray Tracing of Catmull-Clark Subdivision Surfaces.
SCI Institute, University of Utah, Technical Report #UUSCI-2007-011, 2007
http://www.sci.utah.edu/~wald/Publications/

簡単にまとめると、

– リアルタイムレイトレ(パケトレ)が, NURBS や Subdivision surface のレンダリングにも適用可能であり、
– その速度は十分に早い(prman などよりも早い、という結果も)
– メモリもほとんど使わない.

という感じ.

どちらも基本的にはレイパケットが曲面にヒットするたびに細分割をオンデマンドで行い、レイと曲面の交点を求めるというアプローチです. これは前回の中丸メソッドによるカーブレンダリングもそうでした.

NURBS のほうでは、このオンデマンドで曲面分割を処理するという特性により、
Maya では 1GB 以上もメモリが必要なシーンでも、レイトレでやれば 50 MB も使わないという結果が示されています.
さらにレンダリング時間も Maya が 20 秒に対して、レイトレだとたったの 0.5 秒.

Subdivision の方では、prman ではスレッドを増やすと逆に遅くなるので、1 core 同士でパフォーマンスを比較したとあります 🙂
もちろんレイトレの方はコア数に対してそれなりにスケーラブルにパフォーマンスが向上します.

ただ、prman での計測処理については、スクリーンの手前に矩形を貼付け、それに割り当てたシェーダで trace() 関数を発することにより subvision シーンのレンダリングパフォーマンスを測定したとありますので、prman の本来のパワーを発揮できていなくて測定が fair でないかもしれません.

最新の prman 14 ではマルチスレッドが改善したと聞いていますが、いずれにせよ,
ピクセルレベルまで複雑化したジオメトリや大規模シーン(Disney シーン)においては、
reyes およびその pixar の実装は今後のマルチコア時代に十分対応できるアーキティクチャではないと踏んでいます.

まとめ

もはや、レイトレだから遅い、レイトレだからこの機能が使えない、という時代は終わりつつあると思います.

それどころか、ジオメトリが複雑化してピクセルレベルにまで細かくなったり、データが大規模になってくると、
俄然レイトレなどのピクセルセントリックなアルゴリズムが適してくるワケ.
逆に reyes などのスキャンラインベースはどんどん適さなくなってくる.

この状況を示すひとつの好例が、今回取り上げたレイトレでの曲面レンダリングの論文と言えます.
(もちろん論文ではすべての曲面アトリビュートに対応できているわけではないので、今後もさらなる発展が必要とされています)

そして、レイトレによる曲面レンダリングが高速にできるのであれば、最終レンダリング用途だけでなく、
Maya などのモデラや CAD ツールでの曲面プレビュー表示も SW レイトレで、ということもできるわけ.

そうなってくると、もう高価な OpenGL ワークステーション(GPU)もいらないし、
表示のための細分割された頂点を保持するためにメモリも沢山積む必要もない.
ちょっと高パフォーマンスなマルチコア CPU のコアのうち 1,2 個と、洗練されたリアルタイムレイトレアルゴリズムがあれば、
レイトレの方がキビキビと複雑な曲面をプレビューできるし、そのままシームレスに最終レンダリングに持っていくことができる、
そんなことが可能な時期のちょうど手前に我々は居るのだと言えるでしょう.

もちろんそれを実現するには、よくできていて高パフォーマンスな SW レイトレエンジン搭載のレンダラが必要なわけですが、
まさにそれは lucille が発展すれば実現することができるわけです.

Advertisements