Ray Tracing Animated Scenes using Coherent Grid Traversal

by syoyo

Ingo Wald, Thiago Ize, Andrew Kensler, Aaron Knoll, and Steven G Parker
Ray Tracing Animated Scenes using Coherent Grid Traversal
http://www.sci.utah.edu/~wald/Publications/

空間データ構造にグリッドを使った、動的シーンのリアルタイムレイトレです。
基本的な考えは coherent ray tracing や MLRTA と同じで、空間データ構造を kd-tree からグリッドに変えたという感じです。

動的シーンや軟体物体があるシーンでは、kd-tree の再構築がネックになるので、
再構築の高速なグリッドの方が好まれます。
現在の軟体シミュレーションの研究では、空間データ構造にグリッド(ハッシュ)を使っているものが
多いですしね。

しかし、グリッドでは、パフォーマンスアップのために複数のレイをまとめて飛ばそうとした場合、
通常グリッドのトラバースではレイごとに異なったセルをたどることが多いので、
コヒーレンシーをどう保つかが問題でした。

本論文では、これをボクセルをスライス(レイの進む方向の 2D 平面)ごとにステップしていくことで
解決する方法を提案しています。

さらに、mailboxing と MLRTA などでも用いられている SIMD frustum culling を用いて、
ポリゴンとの交差判定の数を極力減らすことで、レイを一本一本トラバースするのにくらべて、
10 – 20 倍ほどのパフォーマンスアップを実現しています。

基本的にはリアルタイムレンダリングでの利用が主のようですが、
オフラインレンダリングにも問題なくできそうなので、実装して試してみたいところです。
MLRTA も実装して試したことがあるのですが、明らかに MLRTA(kd-tree) よりは実装が楽でしょうし。
ただ、やはり二次レイ以降のランダムレイをどうするかが問題ですね。
これについては、WSCG 2006 の The hierarchical ray engine で提案されている
シンプルなレイのクラスタリングテクニックが有用そうな気がしています。

あとは、幅優先レイトレ(breadth-first raytraing)とうまく組み合わせられると、
より省メモリで大規模なシーンを効率的に処理できそうな感じがします。

Advertisements