まとめ~流体物理シミュレーションはどの程度GPUリソースを消費するのか?
今回のNVIDIAは、彼らの実装例におけるグラフィックスリソースの詳細を公開した(下表)。
NVIDIAによれば、独占的に占有するのはシミュレーションパラメータの保持だけでその他のバッファは必要に応じて使用する共用バッファとして確保されているという。
シミュレーション対象領域の分解能を70×70×100としてシミュレーションに必要なビデオメモリは約15MB。トータルでみても約52MB程度。1GB近いビデオメモリが扱えるDirectX 10/SM4.0世代のGPUであればリアルタイム3Dグラフィックスとして実装するのにもそれほど現実離れはしていない。
NVIDIAは「適当なボクセル解像度での流体物理シミュレーションはもう既にゲームに適用できるほどGPUは進化している」と今回のセッションを結んでいる。
実際問題として考えると、3Dゲームグラフィックスに応用するのには、このNVIDIAデモよりもさらに実装を工夫する必要があるだろう。
例えば、広範囲なオープンフィールドで、なおかつ、ほぼ完全な動的なシーンで用いようとするにはまだまだ重荷だ。
というのも、「どこで」「いくつ」炎や煙が発生するかわからないような動的なゲームシーンでは、流体物理シミュレーションを行うシミュレーション対象領域を広範囲に取るのが現実問題として難しいためだ(演算性能的にも、帯域的にも、容量的にも)。
しかし、例えば今回紹介されたオンラインRPG「Hellgate:London」のような、煙や炎が立ちこめる場所がわかりきっている…例えば半壊した戦場のような…シーンでは、今回の実装方法がほぼそのまま使えそうだ。水面についても、よほど広範囲を大局的にやろうとなければ実装ができるかもしれない。
また、広範囲な動的なシーンであっても、流体物理シミュレーションと現行技術のハイブリッド技を使えば、今世代、もしくは来世代あたりのGPUであれば結構現実的なソリューションとなるかもしれない。
具体的には、動的キャラクタとのインタラクトの可能性がある、煙や炎が発生した周辺のみにこうした動的な流体物理シミュレーションを適用し、拡散した広範囲な表現ではパーティクルで代用したり、水面についてもキャラクタがインタラクトする周辺のみを流体物理シミュレーションとし、遠方をテクスチャベースの法線マップ的な水面表現とするのだ。
現行ゲーム機でも、プレイステーション3ならばCPUのCELLプロセッサに内蔵されるSPE(Synergistic Processor Element)を駆使することで、そうしたハイブリッド技の実装が可能かもしれない。
近年、3Dゲームエンジンにおける物理シミュレーション採用がトピックとなり取り沙汰されることが多くなってきた。今後の動向として、先進的なエンジンでは、この流体物理シミュレーションの実装が積極的に行われるようになることだろう。
(トライゼット西川善司)