3Dゲームファンのためのグラフィックス講座

西川善司の3Dゲームファンのための「プレイステーション 4」グラフィックス」講座(後編)

PS4世代のゲームグラフィックスの鍵は新搭載されるテクノロジーにあり!

2月21日正式発表(現地時間)

 前編ではスペック周りやPS4のグラフィックス性能の基本的な部分を見てきたが、後編では、PS3のGPUにはなかった新世代の機能が、一体どんなゲームグラフィックスを実現するかという部分について焦点を当ててみることにする。

PS4世代のゲームグラフィックスはこうなる(3)~刷新されたグラフィックスパイプライン

 PS4のGPUはDirectX 11.1世代SM5.0アーキテクチャベースとなる。PS3のGPUがDirectX 9.0世代SM3.0アーキテクチャだったので、2世代分進化することになるわけだが、この2世代で、GPUのレンダリングパイプラインは大きく進化した。このレンダリングパイプラインの進化そのものが、PS4世代のゲームグラフィックスを直接的に進化させることになる。

 PS3世代のグラフィックスパイプラインには頂点単位の座標変換、頂点単位のライティングやシェーディング、テクスチャアドレスの算出を行なう「頂点シェーダ」、そしてピクセル単位のライティング及びシェーディングを行なう「ピクセルシェーダ」の2種類しかなかった。

【PS3、Xbox 360世代のグラフィックスパイプライン】
PS3、Xbox 360に代表されるDirectX 9/SM3.0世代のグラフィックスパイプイラン。拙著「ゲーム制作者になるための3Dグラフィックス技術」より転載

 PS4世代のグラフィックスパイプイランでは、ポリゴン(プリミティブ)の増減、発現と消失を制御できる「ジオメトリシェーダ」と、ポリゴン(プリミティブ)の分割と変移を実践する「テッセレーションステージ」、そしてGPUをグラフィックスレンダリング以外の用途に活用できるComputeShader(GPGPU)が新設されている。ちなみに、任天堂のWii Uは、DirectX 10.1世代のRADEON HD4000系GPUが採用されているので「ジオメトリシェーダ」までは実装されている(GPGPUにも対応している事になっているが、そのポテンシャルはやや限定的)。

【Wii U世代のグラフィックスパイプライン】
Wii Uに代表されるDirectX 10/SM4.0世代のグラフィックスパイプイラン。拙著「ゲーム制作者になるための3Dグラフィックス技術」より転載

【PS4世代のグラフィックスパイプライン】
PS4(とおそらくは次世代Xbox)に代表されるDirectX 11/SM5.0世代のグラフィックスパイプイラン。拙著「ゲーム制作者になるための3Dグラフィックス技術」より転載

 ジオメトリシェーダ、テッセレーションステージ、ComputeShaderといった新設シェーダは、PCの世界では実用化されて久しいが、ゲームへの応用という点においては、局所的に活用する程度の、いわば「ワンポイントリリーフ的な活用」に留まっていた。それは、やはりこれまでのゲーム開発技術が、どうしても主流ゲームプラットフォームであったPS3、Xbox 360といったDirectX 9世代SM3.0アーキテクチャのグラフィックスパイプラインの活用を主軸にして設計されていたからだ。

 PS4世代(そして次世代Xbox世代)以降では、そうした新設シェーダが当たり前になるため、ゲーム開発技術の進化が加速するはずなのだ。すでに、新世代ゲームエンジンを謳う、各ゲームエンジンでは、こうした新シェーダーの積極活用を実践し始めている。

PS4世代のゲームグラフィックスはこうなる(4)~GPUパーティクルシステムによる100万個超のパーティクル表現

 ポリゴンの増減、発現と消失を制御できるジオメトリシェーダは、そうした新世代エンジンでは新概念のパーティクルシステムの構築に大きく貢献している。

 煙、水、炎といった無形オブジェクトを表現する際に用いられるパーティクルとは、その実、テクスチャを貼り付けただけの板ポリゴンだ。もちろん、個々に対し特別なシェーディングを施す場合も多いが、結局、決め手となるのは物量だ。PS3世代でも数千から数万のパーティクルを描画することは多かったが、このパーティクル処理は圧倒的な物量のパーティクルを動かし、さらにそれらを全て描画しなければならないため、その負荷の大きさは素人目にもイメージしやすい。

 水、炎、煙といったものならば流体物理シミュレーションを数万個のパーティクルに実践しなければならない。従来のレンダリングパイプイランでは、そうした動きの計算と更新をCPU側で実践し、その後、さらにそれらの描画発注をGPUに発行していた。

 ところがPS4世代ではジオメトリシェーダを用いることで、パーティクルシステムをCPUの手を借りずにほぼGPUだけで実践できることになった。シミュレーションの部分は、後述するComputeShaderで実践する(ピクセルシェーダを利用する場合もある)。これによりCPUの動作とは完全非同期で大量のパーティクル制御が行なえるようになるのだ。こうしたGPUだけで実践するパーティクルシステムを「GPUパーティクルシステム」という。

【「Agni's Philosophy」10万匹の蛍の挙動制御】
スクウェア・エニックス「Agni's Philosophy」の1シーンより。GPUパーティクルシステムにより、10万匹の蛍の挙動制御と描画をGPUだけで実践している。蛍はジオメトリ構造を持つ3Dモデルであり、Luminous StudioのGPUパーティクルシステムは、同一モデルを個別パラメータで駆動して複数描画する「ジオメトリインスタンシング」機能にも対応しているとみられる

 スクウェア・エニックスのLuminous Studio、Epic GamesのUnreal Engine4は、共にこのGPUパーティクルシステムを実装済みで、複雑なシミュレーション付きで10万個超、シンプルなものであれば100万個超のパーティクルの運動制御および描画が実践できていると言う。

【「Unreal Engine4」100万個のパーティクル制御】
Epic GamesのUnreal Engine4のデモでは力場を与えて100万個ものパーティクルを個別に動かす様を見せつけた

【Unreal Engine 4技術デモ「Elemental 2013」】

(トライゼット西川善司)