PCゲームに敏感な読者の方なら、昨年よりNVIDIA GeForce GPUでPhysXの利用が可能になったことは既にご存じと思う。2009年1月、GeForceグラフィックスカードのForcewareドライバが更新され、このPhysXがより身近なものとなった。最新のPhysX事情を確認しておこう。
PhysX、物理演算とは
PhysXは、AGEIA Technologiesが開発した物理演算エンジンであるが、2008年にNVIDIAがこれを買収している。そしてGeForce GPUがGPUによる汎用演算処理に対応、GPGPUを活用できる環境が整ったことで、PhysXもGeForce GPUのエンジンによって利用可能となるに至っている。
物理演算と聞いてもよく分からないという方のために簡単に説明すると、3D仮想空間において物理現象を計算することである。ここで言う物理現象は、物体の爆発や物体の落下、流体のシミュレーションなど。映画の世界ではCGによる爆発シーンも非常にリアルだが、これは膨大な量の「点」を高性能コンピュータなどで計算することによって実現している。自動車の空力シミュレーションも同様だ。これらはスーパーコンピュータのような演算性能があるからこそ可能なわけであり、さらに演算時間よりもクオリティを優先するからこそ可能と言える。
演算性能も乏しいPCで、それもリアルタイム処理が求められるゲームではこうしたハイクオリティな映像は実現できない。これまでのゲームではどのように物理現象を表現してきたかと言うと、演算量の少ないものは一部CPUで演算することもあったが、多くの場合は事前にモデルパターンを用意しておき、これを何度も使いまわすという手法が用いられていた。演算量をCPU性能に見合う程度に抑えてきたわけだ。
また、PCに関してはプロセッサの向き不向きも関連している。物理演算に関してはベクトル演算性能が重要なのだが、汎用であることが求められるPC向けCPUはスカラプロセッサであり、ベクトル演算には不向きだ。では、PCにおける物理演算はまだまだ非現実的なのかというとそうでもない。PCを構成するパーツのなかにはベクトル演算を得意とするプロセッサもある。それがGPUだ。
GPUはこれまでグラフィックス処理専門で、他の処理を受け付けるものではなかった。しかし、ここ数年で大きく状況が変わりつつある。GPGPUというキーワードだ。当初はGPUが受け付けるシェーダ命令に偽装することで強引に演算するという手法もとられていたようだが、NVIDIA CUDAのようにGPUを直接、汎用演算に用いるための開発環境が公開されるに至り、GPGPUの動きは加速している。昨年末、ATI、NVIDIA両社が相次いでGPUによるハードウェアエンコード製品を発表したことは記憶に新しいが、2009年はGPGPUが一般PCでも活用されはじめるターニングポイントとなる年になるだろう。ゲームにおける物理演算、PhysXもそうしたアプリケーションのひとつだ。
PhysXが可能にするリアルなゲーム世界
PhysXによってゲームがどのように変わるのか、という点を明らかにしておきたい。今回、PhysXの検証に用いたのはエレクトロニック・アーツの最新ゲームタイトル「ミラーズエッジ(Mirror's Edge)」。「ヤマカシ」という映画があったが、それを思い出させるようなアクションゲームで、ミラーズエッジはそれをさらにスリルある場所で、高層ビルの屋上から屋上へ、ジャンプや壁走りなどのアクションで駆け抜けていくといった内容だ。得手不得手というものはあるので筆者には難易度が高いと感じたが、それでもアクションを決めた際の爽快感は格別だった。
さて、このタイトルはPC版のほかにもPLAYSTATION 3、Xbox 360といったコンシューマ向けゲーム機にも展開されているが、PC版のみがPhysXに対応している。ハードウェア構成が数年間固定されるコンシューマゲーム機と、最新ハードウェアが利用できるPCとの違いがここにあるということだろう。
PhysXの効果としてまずは以下の3つの動画を見比べて欲しい。ミラーズエッジではショートカットのオプションに「-FlybyFlight」を加えることでデモモードが起動する。1番目はGeForce GPUによるPhysXオンの状態、2番目はCPUによるPhysXオンの状態、3番目はPhysXオフの状態でそれぞれ録画したものだ。