LAB
研究室
デモプログラム
【リアルタイムレイトレーシング】-RealTime RayTracing-
レイトレーシングは最近リアルタイムレンダリングの技術トレンドの一つとして注目されつつある手法ですが、元々はオフラインでのレンダラの独壇場でした。
処理アルゴリズムが一般のリアルタイムのポリゴンラスタライザとは異なり、光跡(レイ)を追跡(トレース)して目に届く色を検索して決定するアルゴリズムです。
このアルゴリズムで相互反射や影や、スペキュラ反射を正確に表現することが可能になります。
光跡の追跡のイメージは次の図のとおりです。
それぞれの物体との衝突判定を行ない、その時の影響を累算していきます。
そのため、繰り返し反復判定が必要になることと、効率的なオブジェクトカリングが必要になってきます。
これをDirectX9でGPU上でリアルタイムに実行してしまおうというのが今回の話題です。
今回はグローバルイルミネーションを疑似的に導入してみました。
これによってカラーブリーディングが起きて近接する物体の照り返し・干渉が表現できます。
相互反射の様子は次のスクリーンショットのように球体の反射の中にさらに2次反射・3次反射と複雑な反射が起きていることが確認できます。
このデモは以下からダウンロードすることができます。
本来は実用するにはもっとシェーダーコード自体を最適化しますが、今回はデモとして素直な実装にしてあります。
◎動作可能な環境
<動作条件>
WindowsXP以降、DirectX9.0c
シェーダーモデル3.0以降
GeForce 6000シリーズ以降
Radeon X1000シリーズ以降
特殊なレンダリング手法を用いていますのでドライバの不具合などで一部動作しない環境があるかもしれません。
なるべく最新のデバイスドライバで実行してください。
Download
HexaRayTrace.zip (約3.33MB)
【動作確認済ハードウェア】
NVIDIA GeForce GT 220
NVIDIA GeForce 6800
【操作方法】
マウスのドラッグで視点を回転
実行環境を持っていない方のために動画を用意しました。
HD解像度で閲覧可能です。
CATEGORY
- 製品事例 (7)
- デモプログラム (18)
- プログラムTIPS (41)
- C言語 (5)
- C++ (6)
- C++cording (4)
- Ruby (8)
- VisualStudioの使い方 (3)
- 最適化Tips (5)
- ゲーム開発テクニック (2)
- その他 (7)