編集部から、「現在のスマートフォンやタブレットでは、家庭用ゲーム機でいうとどのくらいの映像表現力に相当するのか、解説してほしい」というリクエストをいただいたので、今回は、この話題を取り上げることにします。ツイートスマホやタブレットのGPUもプログラマブルシェーダアーキテクチャにまずは簡単に、家庭用ゲーム機のグラフィックス表現ポテンシャルについて紹介しましょう。家庭用ゲーム機のゲームグラフィックスは、1994年に登場したソニー・プレイステーション(初代PS)とセガ・サターンの登場でリアルタイム3Dグラフィックス時代を迎えました。2000年にはジオメトリ性能(ポリゴン処理能力)を高め、さらにピクセルフィルレート(ピクセル描画性能)を高めたソニーPS2が登場しました。このPS2、そして翌年の任天堂ゲームキューブまでは、ゲームグラフィックスは、主にジオメトリ性能の強化と、テクスチャマッピングの高解像度化の方向性で進化してきたといえます。様相が変わるのは2001年に登場したマイクロソフトのXbox(初代)からです。初代Xboxは、プログラマブルシェーダアーキテクチャのGPUを採用した世界初のゲーム機だったXboxのグラフィックスプロセッサ(GPU)は、「プログラマブルシェーダ」と呼ばれる新概念の機能が採用されたのです。Xboxよりも前......、すなわちPS2以前のGPUでは、「あらかじめ用意されたグラフィックス表現」(固定機能)から選んで活用することしかできませんでした。ところが、XboxのGPUには、さまざまなグラフィックス表現をソフトウェアとして記述できる(≒プログラマブルな)仕組みが搭載されたのです。簡単にいえば、GPUをプログラムすることで、アイディア次第でさまざまな表現が実装できるようになったということです。アニメチックな見た目のトゥーンシェーダー、1ポリゴン未満の微細凹凸表現を実現する法線マッピング(バンプマッピング)などは、プログラマブルシェーダによって実現することができるようになりました。UのGPUはすべてプログラマブルシェーダアーキテクチャとなっています(WiiのGPUはプログラマブルシェーダではありませんでした)。現在のスマホやタブレットに搭載されているGPUも(よほど機能の低い前時代的なものを除けば)、ほぼプログラマブルシェーダアーキテクチャのものが主流となっています。現代ゲームグラフィックス(リアルタイム3Dグラフィックス)の基礎概念となっているプログラマブルシェーダアーキテクチャも、最初から今の機能レベルで登場したわけではありません。それこそ、初代Xboxのときは、実行できるプログラマブルシェーダの規模はとても限定的でした。このプログラマブルシェーダアーキテクチャは、Windowsパソコン向けに提供されてきたマルチメディアコンポーネントAPIである「DirectX」のバージョンアップとほぼシンクロして進化してきたのでした(正確にはDirectXではなく、DirectXを構成するAPI群の1つで3DグラフィックスプログラミングAPIに相当するDirect3Dなのですが、本稿では便宜上、「DirectX≒Direct3D」という記述で話を進めることにします)。初代Xboxが採用していたプログラマブルシェーダはDirectX8世代に相当するものです。続く、PS3、Xbox360では、これがDirectX9世代相当になります。OneがDirectX11世代相当です。PS3はDirectX9世代のGPUを搭載し、プログラマブルシェーダは頂点シェーダとピクセルシェーダに対応DirectX9世代までは、頂点処理を担当する頂点シェーダと、ピクセル処理を担当するピクセルシェーダの2種類しかなかったプログラマブルシェーダですが、DirectX10世代では、ポリゴンの増減をプログラム制御できるジオメトリシェーダが新設されています。最新世代のDirectX11世代では、ポリゴンをプログラム制御で分割することができるテッセレーションステージが新設され、これを実践するためのプログラマブルシェーダとして、ハルシェーダとドメインシェーダが新設されました。最新世代のGPUには、頂点シェーダ、ジオメトリシェーダ、ハルシェーダ、ドメインシェーダ、ピクセルシェーダの5種類があることになります。図案原案:西川善司著『ゲーム制作者になるための3Dグラフィックス技術』(インプレスジャパン刊)今年、Windows10のリリースにシンクロする形で「DirectX12」の提供が始まりましたよね。DirectX12はDirectX11の次バージョンなわけですから、何か新しいプログラマブルシェーダが追加されたかどうか気になる人もいるでしょう。簡単に結論だけ先に述べると、DirectX12ではプログラマブルシェーダの構成はDirectX11から変更ありません。実は、DirectX12では、グラフィックス表現能力の向上よりも、パフォーマンス(描画効率)向上を目的に開発されたものなので、表現ポテンシャルの観点からは大きな進化はあまりありませんでした。スマホ・タブレットのグラフィックス表現力の世代区分ここからスマホ・タブレットの話題になります。TechnologiesのPowerVR系、ARMのMali系、QualcommのAdreno系の3つが「三強」といった状況です。いえ、PC向けGPUの巨人、NVIDIAはスマホ・タブレット向けにTEGRA系を訴求していますし、おなじみインテルも最近はAtom系でその存在感を高めてきています。ES」というものが使われます。ES1.0は、プログラマブルシェーダ未対応の、いってみればPS2以前の固定機能GPUを想定したAPIでした。ES1.xは、それほど積極活用がなされませんでした。ES2.0では、プログラマブルシェーダアーキテクチャベースのGPUを想定したものに生まれ変わりました。ES2.0でサポートされるプログラマブルシェーダは、頂点シェーダとピクセルシェーダの2つだったので、DirectX9相当、つまりPS3、Xbox360世代の表現能力と同じということになります。iPhone世代でいうとiPhone3GS~5くらい、多様な仕様のあるAndroid系だと一概にはいえませんがAndroid2.x~3.xくらいの端末がこの世代に属します。ES3.0がリリースされます。ES3.0ではプログラマブルシェーダの構成には変化がありませんでした。Android系だと、大体Android4.xくらいの端末(あくまで目安)がこの世代です。ここで、GPGPUに対応するComputeShaderと呼ばれるプログラマブルシェーダが新たにサポートされることとなります。iPhone系だとiPhone5S~6、Android系だとAndroid5.xくらい(あくまで目安)の端末がこの世代です。ES3.2に対応する。ES3.2では、やっとジオメトリシェーダ、ハルシェーダ、ドメインシェーダがサポートされるようになりました。スマホ・タブレットの表現がついにDirectX11相当になったということです。One世代の最新据え置き型ゲーム機相当に追いついてきた......ということです。ES3.2自体がまだ発表されたばかりですから、開発環境は整備中ということもあり、実際にそうした新シェーダー群をフル活用したアプリやゲームが出てくるのはもう少し先になるとは思います。ここでお話ししたのは、あくまで「表現世代がどの据え置きかゲーム機に相当するか」というものです。Oneのゲームが動くぞ」ということをいっているわけではありません。スマホ・タブレットと家庭用ゲーム機では、メモリサイズも違いますし、プロセッサの動作速度も違いますからね。「両者、お絵描きセットの絵の具の色数が同じ」というだけで、「画家としての実力は違う」ととらえてください。Engine4(UE4)ベース。Oneでのゲーム開発を想定したゲームエンジン。Oneの表現力に肉迫するようなグラフィックスのスマホ・タブレットのゲームが出てきても不思議ではありません。