元記事:blender.org - Ray Tracing Optimization


レイトレーシング最適化



2009 Google Summer of Code プログラムの一部として、Andre Susano Pinto氏は新しいレイトレースアクセラレーションシステムを Blender のレンダラ用に実装されました。このプロジェクトはレイトレースのスピードの最適化と、柔軟性を向上し、インスタンス化などの機能の追加に対応することが目的でした。

新旧レイトレース速度比較

プロジェクト終了時のテストファイルの最終ベンチマーク(テストファイル

この新システムでは、レンダリング中にシーン内の至る所でレイが交差する方法を改良しています。旧「オクツリー」アクセラレーション構造体は、様々なバージョンの階層バウンディングボリューム(BVH)構造体によって置き換えられており、Andre氏自らの手により調整されています。

以下は Daniel Genrich氏による、この難解な細部の技術解説です。

彼はヒント/LCTS(訳注:Longest Common Traversal Sequances)を使用してレイの一致を活用し、最後に SIMD を使用する、アダプティブな子のカウントを使用した特別な BVH ツリーに切り替えています。彼は自分自身の開発の経験則を使用してツリーを構築し、予想されるバウンディングボックステストの数を約20%減らしました。彼は自分の BVH を "VBVH" や "SVBVH" と呼んでいます。VBVH は SIMD 以外を使用している場合、SVBVH に比べかなり遅いです。


もしあまりよく分からない場合は、このグラフ自身が雄弁に語ってくれるでしょう!



インスタンス化




インスタンス化された形状、トータルで11億5千万Face、レンダリング時間23分、200MBのメモリを使用


新しいレイトレースアクセラレータはインスタンス化に対応しており、単一のオブジェクトに比べ、ほぼ少しのメモリ使用量の増加で、同一のオブジェクトをシーン内にできる限り多く複製することができます。これにより、メモリを使い果たすことなく、大量の同様のオブジェクト(森林など)のレイトレーシングが可能になります。
レイトレーシング用のインスタンス化のレンダラは、スキャンラインのレンダリング用の物と同等になり、Dupliverts、Dupliface、Dupligroups、Particle の Object / Group インスタンスに対応しています。



その他の情報


GSoC 2009 Raytrace projectページ
テストシーン



元記事:blender.org - Ray Tracing Optimization