|
会場:Moscone Convention Center
ソニー側では、ファーストパーティのゲームスタジオがPS3向けタイトルを開発した際に蓄積したノウハウをまとめてライブラリ化し、これを「PLAYSTATION Edge」として提供を開始する。
・Animation System
PLAYSTATION EdgeはPS3ライセンシーを結んだ開発スタジオに提供され、フレームワークということもあってフルソースコードが付属するのが特徴だ。特にSPU関連のモジュールはSPURS(SPU Runtime System)として提供される。SPURSの仕組みは本連載の「西川善司の3DゲームファンのためのPS3パフォーマンス考察講座」に詳しく解説しているが、SPEが自発的にデータを入出力して処理していくセルフマルチタスクを実現するもの。SPUに独立性の高い処理を自発的に行なわせ、高速に並列実行できる仕組み……と思ってもらうといいだろう。なお、コードはCや簡易ネイティブ言語(SPU Intrinsics)で書かれているという。 ■ PLAYSTATION Edge:アニメーションシステム
ゲーム進行を司るゲームロジックが、キャラクタの新しい姿勢をこうしろと指示を出す(Game Logic)。これを元に、どの関節をどう曲げるか、どの関節とどの関節にどういう補間をすべきかという処理をまとめ上げる(Blending Tree Generation)。これを実際にどの頂点データにどういう頂点計算をさせればよいかという処理リストを作成する(Low Level Operation List Generation)。最後に実際にやるべき計算を実際に実行する(Low Level Operation Execution)。
一般的なアニメーションシステムの実装や、最初のプレイステーション 3 SDKでは、最下段のLow Level Operation ExecutionのみをSPU(SPEはSynergistic Processor全体を、そしてSPUは本来はSPEの中に含まれる演算器のみを指すが、よくSPE=SPUと同義語として用いられるので、本稿もそれに従う。PPE=PPUも同様)で実行させる実装になっていた。
左下の図は実行結果のSPUとそのバスの負荷を表したグラフだが、SPUはLow Level Operation処理にフル稼働していることがわかる。一方で、Blending Tree関連の構文解析をしている間はSPU負荷は減るが、その間にDMAを稼働させて次のフェーズの処理に必要なデータを取り込んだり、処理を負ったデータを出力する工程を行なっていることがわかる。 この他、PLAYSTATION Edgeアニメーションシステムでは、最大12レイヤーの複数アニメーションの合成処理、また異なる上半身と下半身、腕と脚などの部位単位のアニメーションを1体の3Dキャラクタに適用していくパーシャルアニメーション処理、またキャプチャーしたモーションデータを圧縮されたまま取り扱って、リアルタイムに展開して適用していくような仕組みも備えている。
モーションデータの圧縮はオフラインツールで実現できるようになっており、モーションデータの冗長性をカットし、適当なフレーム単位のブロックに切り分けて管理する仕組みになっている。
■ PLAYSTATION Edge:ジオメトリーシステム PLAYSTATION Edge:ジオメトリーシステムは主に2つのモードが用意されている。プライマリーモードは専用オフラインツールで取り扱うジオメトリデータを最適化して利用するもの。後述するジオメトリシステムのパイプラインの全てを利用できるため、基本的にはこれを利用することが奨励される。 セカンダリーモードは社外ツールで作成されたジオメトリデータを取り扱うもので生のジオメトリデータストリームを取り扱うことになるために、後述するジオメトリパイプラインの一部の機能しか利用できない。とはいえ、プロトタイプ作成時にはこちらを用いてみるといった使い方ができる。
PLAYSTATION Edgeのパイプラインは以下(右下画像)のようになっている。
最上段から順番に見ていくことにしよう。
PLAYSTATION Edge:ジオメトリシステムで取り扱う頂点データ列はバス帯域節約やメモリ節約の意味合いから圧縮されており、実際の処理を行なう前段階として展開する必要がある。これを行なうのが最上段の「Vertex Decompress」だ。
正接(Tangent)ベクトルや法線(Normal)ベクトルは24ビット単位ベクトルフォーマットで表現される。圧縮方法としては適当なブロック単位に誤差を最小限にして最適な符号化を施すDXT的な非可逆圧縮メソッドが用いられているようだ。また、テクスチャ座標は可変長の固定小数点の表現を採用している。
なお、PLAYSTATION EdgeではPS3のGPUのRSXの頂点キャッシュが効きやすいように、進化型のVertex Cache Optimizer(VCO)を提供しているという。パフォーマンス的には従来のPS3 SDKのVCOと比較して約3%程度のパフォーマンス向上が得られているとしている。
「Blend Shapes」は複数のモデルの形状を合成する処理。
このSPUを使ったスキニングは、RSXの頂点シェーダを使うよりも30%のパフォーマンス向上が見られたとしている。また、ピクセル処理などが簡略化され(ピクセル書き込みは深度値の書き込みのみ)、どちらかといえばジオメトリ処理主体のシャドウマップ生成などではRSXだけで行なったときに比べて70%のパフォーマンス向上があったという。
「Compression」はここまでの処理を終えてから、今度はRSXが処理する際に用いるデータ形式へと圧縮エンコードを行なう。これは丁度、圧縮展開と丁度逆の処理になる。
■ PLAYSTATION Edge:ジオメトリシステムの動作
こうした実装を行なうには、便宜上2つの処理バッファを用意してフレームごとに利用するバッファを切り換えるダブルバッファ実装にする場合が多い。ところが、PLAYSTATION Edgeジオメトリシステムでは、“Just in Time”(JIT)実装、すなわち、そのフレームに用いるジオメトリ処理をその場で行なう実装形態になっている。これはSPUのローカルストアが256KBというあまり余裕のない構造だからというのが一番の理由だが、非常に厳密なパフォーマンスチューニングの末、JIT実装でも問題がないと判断できたため……というのも大きな理由だとのこと。
まず、PPUが、SPURSジョブを生成して、SPUで動作するジオメトリプリプロセッサ(SPUジオメトリプリプロセッサ)を起動する。PPUはRSX向けの描画コマンドを生成するが、この際、あとからSPUジオメトリプリプロセッサが吐き出すジオメトリコマンドをはめ込めるようにブランクを空けておく。SPUで処理されたジオメトリデータはこのブランクに埋め込まれて完全な描画コマンドリストになり、これがRSXに送られる。
なお、このPLAYSTATION Edge:ジオメトリシステムは複数のSPUで並列動作させることができる。PS3には稼働可能なSPUが7基あるが、うち6基はがアプリ側で利用できるので、理論上は6基をSPUジオメトリプリプロセッサに割り当てられることになる。
ちなみに、SPE Intrinsicsというのは、SPEのネイティブな命令語(アセンブリ命令語)にC言語っぽい見せ方をした簡易プログラミング言語のこと。変数名などはC言語のものが使えるのでちょっとだけリッチなアセンブリ言語という感じのものだ。C言語のプログラムに透過的に組み合わせて、いわば外部関数的に使うことができる。
これは、非常に強力で、よく使うルーチンをマクロの形で登録しておき、これを実際のプログラムに適宜挿入していくと、コンパイラがマクロを展開してさらにSPUのアーキテクチャに最適化したスケジューリングも行なってくれる。これにより、SPU向けCコンパイラの吐き出すコードよりも最大で20倍は高速化されたという。
■ PLAYSTATION Edgeシステムのデモを公開
デモシーンのアートセットはE3 2006で公開されたロンドン・ピカデリーサーカスのデモシーンを流用したもの。レンダリングエンジンはPLAYSTATION Edgeを組み込んでデモとして仕上げたもの……ということになる。シーンはアンチエイリアシング付きで1,280×720ドットでレンダリングしており、PLAYSTATION Edge側のアニメーション処理、各種ジオメトリ処理、早期カリングを適用している。すなわち、頂点シェーダ的な処理は全てRSXではなくSPUで代行しているというわけだ。 影生成はシャドウマップ技法(デプスシャドウ)を使用。セルフシャドウまでがしっかり出ているのがわかる。シャドウマップ技法の場合は光源から見たシーンの深度情報をレンダリングするが、テクスチャの貼り付けや特殊なピクセルシェーダプログラムを稼働させないので割合的に言えばピクセルシェーダ負荷よりもジオメトリ負荷の方が高くなる。よって、こうした影生成付きシーンでもPLAYSTATION Edgeは効果的にパフォーマンス向上に効いてきていると推察される。 デモではアニメーションも披露。4体のキャラクタに異なるタイミングで歩行アニメーションを適用しているのがわかる。このデモではこのキャラクタに20個のアニメーションセットを用意していて、PLAYSTATION Edge:アニメーションシステムの仕様により、うち、任意の最大12個のアニメーションを任意の割合でブレンドできる。デモでは走るアニメーションと銃を構える2つのアニメーションを合成し、銃を走りながら構えるアニメーションを生成している様が見られる。
デモ終盤では768体の人体キャラクタと50台の車のモデルを表示して、1フレームあたり140万ポリゴンのシーンを60fpsでレンダリングしていく様を見せている。768体の人体キャラクタにはランダムなタイミングでランダムな別々のアニメーションを適用している様が実際に見て取れる。
■ PS3タイトル開発の最終兵器となるか~GCM Replay この他、RSXのデバッグツール「GCM Replay」についての紹介も行なわれた。これはPS3のRSXで一体何が行なわれていて、どこにボトルネックが発生しているかを測定するツールだ。同種のツールにマイクロソフトはXbox 360/Windows用にPIX、NVIDIAは自社GPUにNVPerfHUDといったデバッグツールをリリースしているが、GCM Replayはまさにソニー製PS3向けPIXX/NVPerfHUDという位置づけのものだ。 かなり専門的なツールになるので、本稿での詳しい紹介は省略するが、レンダリング途中のレンダーターゲットの内容やテクスチャの内容が確認できたり、頂点シェーダやピクセルシェーダの各シェーダプログラムのトレース、レジスタ内容の確認などができるほか、プロファイリング機能を活用して、レンダリングフェーズのどこにボトルネックが発生しているかまでの解析が行なえる。
これまで石器時代に近い(?)、手探り状態だったRSXのデバッギングとパフォーマンス解析が、一気に近代的に進化させられたという感じで、現在進行中のPS3向けタイトルのプロジェクトも、パフォーマンスゲインがグっと向上できる可能性が出てきたといえる。
■ まとめ~PS3、ヤツは一戦ごとに進化している!! しかし、現実も見えてきた?
Xbox 360でうまくいっていたポリゴン予算をPS3に持ってくると、頂点性能が足りなくてうまくいかず、ポリゴン数削減に迫られるというのだ。RSXの頂点シェーダの性能がそこまで低いというのは少々意外だが、「SPUを頂点処理に使う」ということに気が付いた開発者は、逆に口を揃えて「RSXの頂点シェーダは要らないですね」とまで言ってくる。どうやら、PS3の開発シーンでは、RSXの頂点シェーダを活用しないのがトレンドとなってきているらしい。 GDCで会った、とある開発者は「PS3からEE(Emotion Engine:PS2のCPU。互換性維持のためにPS3にも搭載されていたが、欧州版を皮切りに、アメリカ、日本版でも将来的にカットされるロードマップが示された)がなくなりますけど、RSXの頂点シェーダもなくなってもいいかな、なんて(笑)」と冗談を言っていた。 極論を言えば盲腸化しつつあるRSXの頂点シェーダが、なぜそこまで遅いのかは、はっきりしてもらわないと困るのだが、ボトルネックの原因が明確となり、最大パフォーマンスが得られるメソッドが発見され、しかも、そのノウハウがPS3プラットフォーム参加者全員に提供されることとなった、というのは価値あることだとは思う。 ただ、本来、PS3のCELLプロセッサの6基(7基)のSPUは「AIや物理シミュレーションといったグラフィックス以外のゲームの本質的なリアリティ向上のために活用すべき」というメッセージが込められていたはずで、それが「高速な頂点シェーダとして使うべし」というメッセージに置き換えられたのだとすると、SPUの未来性に夢を感じていた3Dゲームファンからすると少々残念なことだといえるかもしれない。まあ、6基全てのSPUが頂点シェーダに活用されることはないにしても、だ。 また、SPUのプログラミングそのものについても、ソニー自体がもがき苦しんでいるのが伝わってくる。本来はSPUは高級言語でプログラミングできることがウリだったはずなのだが、ソニー自身が「Cコンパイラの出力コードは信用ならないのでSPUプログラミングはIntrinsicsネイティブ命令を使いましょう」と奨励し、「Intrinsicsだとコンパイラの20倍高速です」と自ら言いきってしまっているのが、まさにその象徴だ。SPUコンパイラにはソニー製とIBM製があり、Playstation SDKにはソニー製のものが使われているらしいが、IBM製のものが、どの程度のものなのか気になるところだ。 Xbox 360は1年先に発売された関係で、“先を走っている”というアドバンテージがあり、さらに「マイクロソフトはソフトメーカーである」というバックグラウンドもあるのでノウハウの蓄積度、そして開発環境の善し悪しで比較すれば、確かにPS3は劣勢であることは否めない。しかしPS3陣営には、優秀なファーストパーティが日本を含め、世界中にあり、プラットフォームパワーという意味において、Xbox 360に負けている点はないだろう。
まさに、今回のPLAYSTATION Edgeはファーストパーティの知識の結集という感じであり、このノウハウが活かされて今年末に登場する「2世代目のPS3タイトル」は今から楽しみにしていたい。 (2007年3月15日) [Reported by トライゼット西川善司]
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp Copyright (c)2007 Impress Watch Corporation, an Impress Group company. All rights reserved. |
|