前編はこちら
【レポート】CEDEC 2010 - Windows版「ロストプラネット2」にみるDirectX 11フィーチャー(前編)
http://journal.mycom.co.jp/articles/2010/09/02/cedec01/

Windows版ロストプラネット2では、DirectX 11の新機能の1つ、DirectComputeを利用している。

グラフィックスプロセッサ(GPU)は、今やその実体は超並列のベクトル演算器であり、2004年くらいから、この機能を汎用目的に利用する試みが行われてきた。このGPUの汎用目的転用をGPGPU(General Purpose GPU)と呼ぶが、標準仕様がなかったために、様々な亜流や独自手法が生まれることとなった。DirectComputeは、このGPGPUをマイクロソフトがDirectX的に仕様をまとめあげたものに相当する。このDirectCompute利用時、GPU内部のシェーダコアはグラフィックス描画用途ではなく、汎用演算目的で仕事をするのだが、この時のシェーダユニットを便宜上、ComputeShaderと呼ぶ。

Windows版ロストプラネット2では、このDirectComputeを水面の波表現とボスの表皮のぷるぷるしたソフトボディ表現に応用している。

セッション会場の様子

松宮雅俊氏(カプコン 制作部 技術研究室)

Windows版ロストプラネット2とDirectCompute

DirectComputeによる波の生成

Windows版ロストプラネット2の水面表現は2つの波の合成によって実現されている。

1つは、水面全体に出ている波で、これは、波の凹凸を表現したハイトマップを複数、多重に水面にディスプレースメントマッピングすることで実現している。この波は、水面に何も衝撃がない平和な状態でも出ている波になる。

もう1つは、DirecComputeを利用してシミュレーション生成される波表現だ。これはモンスターやプレイヤーキャラクタが、水面に対して衝撃を与えるなどして動的に発生させた波が該当する。

Windows版ロストプラネット2の水面表現

Windows版ロストプラネット2、DirectX 9ランタイムでの波表現

Windows版ロストプラネット2、DirectX 11ランタイムでの波表現

この動的に発生した波の表現には、SIGGRAPH 2007にて、Cem Yuksel氏らが発表したWave Paticles法の簡易版を応用している。

この手法は、発生した波動をパーティクルで近似して取り扱うものになる。例えば、バシャっと水たまりを蹴り降ろしたとき、水面には、円状の波が水面に対して広がっていく。Wave Particles法では、この波を円状に並んだ、複数のパーティクル(点)で表現する。

前出の例で行けば、時間経過と共に、波は円状に広がっていくことになるが、この手法ではパーティクルが円状が広がる方向に動いていくことになる。

各パーティクルは凹状や凸状の起伏の表現単位を担当する。つまり、円状の波も、局所的には凹状や凸状の盛り下がりや盛り上がりにすぎない。パーティクル数が無限に多ければまだしも、現実的には、パーティクル数は有限個となるため、このままだと、全く波に見えない。そこで、局所的な凹凸を、フィルター処理によってあえてボカし、隣接する凹凸がスムーズに繋がったような面表現へと加工する必要が出てくる(後述)。

Wave Particles法では、一種の粒子シミュレーションともいえるが、粒子間(パーティクル間)の相互干渉は省略される。ただ、障害物での反射などはサポートされる。

現実世界の波がそうであるように、波は時間と共に消失する。これは各パーティクルにライフタイムを設定し、時間と共に減衰することで再現する。

波が広がって各パーティクル間の距離が広がって行くと、波の凹凸感が離散的に見えてきてしまい、フィルター処理を施してもごまかしきれなくなる。そのため、オリジナルの論文では、パーティクルの進行距離に応じて、パーティクルを分割するアイディアが盛り込まれていたが、Windows版ロストプラネット2は、ゲームアプリケーションであり、GPUリソースがそれほど潤沢ではなかったことから、この「パーティクル分裂」の処理系は省略されている。このため、場合によっては、波の凹凸がパーティクル単位で表現されていることが分かってしまうような時もある……とのこと。

Wave Particles法

この他、Windows版ロストプラネット2の波表現では、発生する波は、衝撃の形状に配慮せず、ただ放射状に波紋が広がるような表現に限定していたり、このWave Particles法の波動シミュレーションも、全ての水面ではなく、PS3、Xbox 360版において爆風エフェクトに反応する水面に対してのみ、処理対象とする……といった対応に留めている。

こうした仕様決定は、この作品が、もともとはPS3、Xbox 360版向けタイトルとして作られ、そのWindows版移植版という位置づけから、「制作時間や開発コストをたくさんは掛けられない」といったビジネス的な制約が主たる理由となっているようだ。

Windows版ロストプラネット2における波動シミュレーションの仕様