西川善司の3Dゲームファンのための次世代PSP-GPU講座
“Tile Based Deferred Rendering”ってなに?
ソニー・コンピュータエンタテインメントの次世代携帯ゲーム機になると思われる……本稿では仮称「PSP2」としておくが、海外サイトなどで、一時、「PSP2のGPUがSGX543MP4になる!」と騒がれたことがあった。
それが事実かどうかは確かめる術はないが、「PowerVR」といえば、iPhone 3GSも「PowerVR」だし、もしかしたら?……と夢が広がってしまうのは仕方のないところ。
GPUといえば、「NVIDIAかATI(AMD)か」という昨今、分野は違うものの、ここ最近台頭してきた「PowerVR」について調べてみるのも悪くないと思い、GDC会期中に出展していた「PowerVR」開発元のImagination Technologies Groupのブースを訪れてみた。すると幸いにも最新「PowerVR」についての基本資料がもらえたので、これを読み解きながら「PowerVR」がどんなものかを理解してみることにした。
対応してくれたImagination Technologies Group、PowerVR Graphics、 Business Development ManagerのKristof Beets氏 |
「PowerVR」といえば、ゲームファンにとってなじみ深いのはドリームキャストに採用された「PowerVR2」だろう。あの時代は、まだ、テクスチャを貼り付けることと、ごく基本的なライティングを行なうことができたGPUであり、現在のGPUの姿と比べるとまだまだ原始的な姿であった。
では、最新の「PowerVR」シリーズはどのような姿に進化を遂げたのか。
「PSP2」に搭載されるという噂になったSGX543MP4のシリーズである「PowerVR SGX5」シリーズをお題に、その中身を探っていこうと思う。
■ 噂になったGPUはどんなもの?
本稿で取り上げるのは、主に「PSP2(仮)」に搭載されると噂になったSGX543MP4のシリーズとする。
「SGX543MP」のMPはマルチプロセッサの略で、MP4は4コアプロセッサの意味になる。
アーキテクチャ的にはMP16の16コアまでの対応ができ、NVIDIAのSLIのように、コアを増やせば増やすほどパフォーマンスが上がる仕組みになっている。各コアは相互連携を密に取りながら並列動作するため、1コアを増加するたびにパフォーマンスが90%はアップするという。マルチコアは奇数コアにも対応するのでMP3という3コアソリューションなどもあることになる。
1コアあたりのコア面積は2.6mm2、16コアで32mm2。PSP2用と噂になったMP4でも一辺の専有面積は3mm強四方という極小コアということだ。
200MHz動作時の4コアあたりのスループットは、毎秒1億3,300万ポリゴン、毎秒40億ピクセル程度だという。MP4のスペックを、過去のPC用GPUだとどのくらいかを当たってみると、ピクセルフィルレートでいけば2003年のNVIDIAのウルトラハイエンドGeForce FX 5900 Ultra(毎秒36億ピクセル)程度くらいか。
「SGX543」シリーズの対応グラフィックスAPIは、OpenGL/ES2.0(またはOpenGL/ES1.1+Extention Pack)となっているので、DirectX世代で言うところのDirectX 9世代プログラマブルシェーダー3.0仕様(SM3.0)相当のポテンシャルを持つことになる。
プログラマブルシェーダーアーキテクチャとしては統合型シェーダーアーキテクチャを採用しており、各汎用シェーダーユニットは頂点シェーダーとして起用されたり、ピクセルシェーダーとして起用されたりする。1コアあたりのシェーダーユニット数(パイプライン数)は4。MP4では4倍の16ということになる。
【デモムービー】 |
---|
「PowerVR」を用いた顔面アニメーション |
【デモムービー】 |
---|
「PowerVR」による人体アニメーション |
■ PowerVRアーキテクチャの一風変わったレンダリング手法とは?
「PowerVR」シリーズのレンダリングエンジンは、NVIDIAやATIのGPUと違い、Zバッファを用いないレンダリング手法を採用している。
Zバッファとは、最も最近に描画した(ポリゴンを構成する)ピクセルの視点から見た奥行き値を記録するバッファで、ポリゴンの描画順序がでたらめでも、描画していくポリゴン群の手前と奥の関係性を判別しながら描画していくのに欠かせない仕組みとなっている。
「PowerVR」は、このZバッファを用いないでレンダリングするのが最大の特徴で、特にこの手法を「Tile Based Deferred Rednering」(TBDR)と呼んでいる。基本的な概念として、TBDRは繰り返し描画をしないということを美点としている。
「Tile Based」の部分は、管理上、描画対象画面を適当なタイル(ブロック)に分割して管理していることを意味していて、描画そのものは各タイルにつき1回しか行なわれない。基本設定とされるタイルサイズは16×16ピクセルだというが、GPUのコンフィギュレーションで変えることもできるそうだ。
グラフィックスアプリケーション(ゲームエンジンなど)から、そのシーンの描画コマンド群がやってくると、それを解釈して頂点シェーダー処理をして、どのポリゴンのどの部分がどのタイルに対応するかを算出していく(ポリゴンが複数タイルにまたがる場合もあるが、それにももちろん配慮する)。
この時、やってきたポリゴンが、すでにそのタイルに割り当てられていたポリゴンよりも奥側の場合は、遮蔽されていると判断できるので排除する(すでにそのタイルに割り当てられていたポリゴンが半透明だった場合は、生きる)。
こうしてそのシーンのポリゴンが全てやってきたら描画フェーズに移行する。
描画はタイル単位で並列に行なわれる。GPUコア側のパイプラインが複数あれば1度に描画されるタイル数が増える……というイメージだ。
さて、タイル内の、あるピクセルの描画を行なう際を考えるとする。
そのピクセルに割り当てられていたいくつかのポリゴンのうち、視点方向に対して1番近いポリゴンのピクセルだけが採択されて、ピクセルシェーダーにてピクセル陰影処理が行なわれて描画に向けて出力される。半透明が絡んでいる場合は、さらに奥方向のポリゴンのピクセルの陰影処理を行なうために、再びピクセルシェーダーが稼働することになる。半透明が絡むと重くなるのは「PowerVR」も同じということだ。
タイル単位で最初にポリゴンの割り付けや基礎処理を行なってしまい、頂点単位のライティングはもちろん、ピクセル単位のライティングまでをも後回し(Deferred)にするので「Tile Based Deferred Rendering」という名前が付いているのだ。
【デモムービー】 |
---|
「PowerVR」のシェーダー機能デモ |
【デモムービー】 |
---|
「PowerVR」のシェーダーエフェクトのデモ |
■ 「PowerVR」アーキテクチャの利点は?
「PowerVR SGX5」シリーズの内部ブロックダイアグラム |
PowerVRシリーズのロードマップ |
右図は「PowerVR SGX5」シリーズの内部ブロックダイアグラムになる。
「Vertex Data Master」は、ポリゴンを構成する頂点データを取りそろえるブロック、「Coarse Grain Scheduler(CGS)」は後段の汎用シェーダーユニット「Universal Scalable Shader Engine(USSE)」の起用を管理したり発注したりするブロックだ。
「Tiling Co-Processor」は画面座標系に変換されたポリゴン達をタイルに割り付けて、実際のピクセルレンダリングに向けて各種準備を行なうところ。
「Pixel Data Master」は実際のピクセル描画に向けて関連データを取りそろえるブロックだ。ここで「CGS」を通って「USSE」の汎用シェーダーユニットをピクセルシェーダーとして起用してピクセル陰影処理を行なう。「Texturing Co-Processor」はテクスチャーユニットだ。出力されたピクセル値はPixel Co-Processorで取りまとめられて書き出される。
「TBDR」の利点は、
- (1) Zバッファがないため、メモリ利用効率が高い
(2) Zバッファアクセスがないため、バス消費が少ない
(3) 描画順序を気にせずとも正しい半透明描画が行なわれる
といったあたりで、(1)と(2)については低消費電力に結びつけられる。この省電力性能こそ、「PowerVR」がここ昨今の携帯機器や組み込み機器への採用率が高いことに結びついているのだ。
そのかわり、一般的なGPUよりも、描画に取りかかる前の計算量が多くなる印象がある。しかし、「メモリアクセスが多いよりはマシだろう」という哲学のもと、「PowerVR」はこのアーキテクチャを守って進化させてきているのだ。
iPhoneでの採用が起爆剤となり、組み込み機器向けGPUとして一躍注目の的となった「PowerVR」。本当に「PSP2(仮)」に採用されるのかはわからないが、今後、その動向に注目していく必要がありそうだ。
(2010年 3月 16日)
[Reported by トライゼット西川善司]