GPGPUは別なグラフィックス手法をアクセラレーションする

GPUを汎用目的に活用するGPGPUという概念の実用化は、科学技術計算や業務用シミュレーションなどの、これまでCPUベースで行われてきたHPC分野をGPUに置き換えていくパワーがあり、これこそが近年、NVIDIAが強く市場開拓してきたものなのだが、これとは別に、Kirk氏は「GPGPUだからこそ出来る新しいコンピュータグラフィックスの世界というものがある」と述べる。

その1つがレイトレーシングのアクセラレーションだ。

Direct3DやOpenGLに代表される、現状のラスタライズベースの3Dグラフィックスは、表現をリッチにしようとすればするほど、多段レンダリングが必要になりレンダリングパイプラインが複雑になる。

一方、レイトレーシングは、パイプラインとしてはシンプルで、飛ばしたレイがどういう光学現象の影響を受けるか……という部分を実装していくだけで説得力の高い映像が得られる。

ラスタライズ法 vs レイトレーシング法

たとえばソフトシャドウ表現は、スタライズベースのレンダリングでは、影のレンダリングを実装して、ブラーのようなポストプロセスで影をぼかす……といった実装になるが、レイトレーシングでは、そもそも遮蔽が考慮されるので、影のレンダリングをあえて別に実装する必要がない。ライティングに際して面光源に配慮したり、反射光のような二次光源に配慮したライティングを行うだけで自ずとソフトシャドウが出てしまう。レイトレーシングはアルゴリズムとして強健なのだ。

ただ、もちろん、レイトレーシングではGPUが行うべき演算量は極端に増えてしまうので、速度的にはラスタライズ法には現状はかなわない。

ただ、このレイトレーシングも、GPGPUを活用することでアクセラレーションが可能になるという。

レイトレーシングでは投げたレイがいわば1つの処理単位であり、多くの演算コアがあれば並列にこれを処理して短時間で済ませられるし、逆に並列数が十分すぎるほど強力であれば、1ピクセルにつき複数のレイを飛ばしたり、飛ばしたレイが衝突した際に反射させるだけでなく複数の例に分割されてさらにその先をトレースすることも容易にでき、スケーラブルにレンダリング品質を上げられる。

NVIDIAでは、現在CUDAベースのプログラマブルレイトレーシングエンジンである「OptiX」を開発中であり、第一バージョンはすでに公開中となっている。

このOptiXシステムのユニークなのは、プログラマブルアーキテクチャだという点。レイトレーシングの処理単位を要素分割し、その各要素をユーザーカスタマイズするという感じでオリジナルのプログラムで構成できるのだ。ちなみに、このOptiXについての詳細は、すでにレポート済みなので、こちらを参照して欲しい。

OptiXのプログラマビリティをラスタライズ法のシェーダと対比した表

OptiXのメカニズム

OptiX SDKは公開中

動画
OptiXの原型にて制作されたリアルタイムレイトレーシングのデモ映像。2008年のSIGGRAPHでお披露目

動画
OptiXの第一バージョンで制作されたマルチバウンスに対応させたレイトレーシングのデモ。このクオリティになると流石に、リアルタイムというよりはインタラクティブ……といったパフォーマンスレベルになる

このCUDAを活用したレイトレーシング法のアクセラレーションはNVIDIAの「OptiX」だけでなく、mental images社の業務用レイトレーシングエンジン「iray」がある。また、Kirk氏は、mental image社のirayの機能をクラウドコンピューティングの形で提供するGPGPUサーバーシステム「NVIDIA Reality Serve」についての紹介も行った。

独mental Image社の業務用レイトレーシングエンジン「iray」