2010年05月25日

リアルタイムレイトレーシング

こんにちは!イワサキです。わーい(嬉しい顔)

しばらくご無沙汰していました。久々に技術デモプログラムを公開してみたいと思います。

今回のお題は『リアルタイムレイトレーシング』です。
レイトレーシングは最近リアルタイムレンダリングの技術トレンドの一つとして注目されつつある手法ですが、元々はオフラインでのレンダラの独壇場でした。
処理アルゴリズムが一般のリアルタイムのポリゴンラスタライザとは異なり、光跡(レイ)を追跡(トレース)して目に届く色を検索して決定するアルゴリズムです。

このアルゴリズムで相互反射や影や、スペキュラ反射を正確に表現することが可能になります。
光跡の追跡のイメージは次の図のとおりです。

2010-05-25-1.jpg

それぞれの物体との衝突判定を行ない、その時の影響を累算していきます。
そのため、繰り返し反復判定が必要になることと、効率的なオブジェクトカリングが必要になってきます。

これをDirectX9でGPU上でリアルタイムに実行してしまおうというのが今回の話題です。
今回はグローバルイルミネーションを疑似的に導入してみました。
これによってカラーブリーディングが起きて近接する物体の照り返し・干渉が表現できます。

2010-05-25-2.jpg


相互反射の様子は次のスクリーンショットのように球体の反射の中にさらに2次反射・3次反射と複雑な反射が起きていることが確認できます。


2010-05-25-3.jpg





このデモは以下からダウンロードすることができます。
本来は実用するにはもっとシェーダーコード自体を最適化しますが、今回はデモとして素直な実装にしてあります。


◎動作可能な環境

 <動作条件>
 WindowsXP以降、DirectX9.0c
 シェーダーモデル3.0以降

GeForce 6000シリーズ以降
Radeon X1000シリーズ以降


特殊なレンダリング手法を用いていますのでドライバの不具合などで一部動作しない環境があるかもしれません。
なるべく最新のデバイスドライバで実行してください。

2010-05-25-4.jpg2010-05-25-5.jpg

Download
HexaRayTrace.zip (約3.33MB)

【動作確認済ハードウェア】
NVIDIA GeForce GT 220
NVIDIA GeForce 6800

【操作方法】
マウスのドラッグで視点を回転




実行環境を持っていない方のために動画を用意しました。
HD解像度で閲覧可能です。












ヘキサドライブでは自社内製ゲームエンジン「ヘキサエンジン」を開発しています。
いろいろな技術を取り込んでゲーム開発を力強く加速させてみませんか?

新卒・中途ともにご応募お待ちしています。
皆さんに会えることを心待ちにしています手(パー)ぴかぴか(新しい)ぴかぴか(新しい)ぴかぴか(新しい)


posted by 管理人 at 23:20 | Comment(0) | 研究・開発
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。