組み込み向け3DグラフィックスAPIの最新版「OpenGL ES 3.0」が登場 ―― デスクトップ向けグラフィックスを猛追する組み込みグラフィックス
●描画機能を改善して高画質化&負荷低減
描画機能についても,新しいAPIがいくつか追加されました(図5).
図5 新しい描画機能
出典:SIGGRAPH 2012 Khronos media session資料
プリミティブ・リスタート機能では,複数のトライアングル・ストリップ形式(複数の三角形のポリゴンを,頂点の一筆書きで定義するデータ構造)のオブジェクトを1コマンドで描画できます.
オブジェクトのコピーを1コマンドで行えるレンダリングのインスタンス化も追加されました.これらの機能追加により,ドライバの処理負荷が低減されると期待できます.
また,GPUの頂点処理の結果をバッファに出力できるトランスフォーム・フィードバック機能が追加されました.この機能により,アニメーション処理や物理計算が高速になります.GPU内の演算器をグラフィックス以外の用途に使うGPGPUのアプリケーションにおいて有利に働きます.
レンダリング機能についても,機能追加があります(図6).
図6 新しいレンダリング機能
出典:SIGGRAPH 2012 Khronos media session資料
家庭用ゲーム機で頻繁に使用されるディファード・レンダリングのために,OpenGL ES 3.0ではマルチレンダリング・ターゲット機能が追加されました.レンダリング・ターゲット(結果の出力先)を最大四つ定義できるようになりました.
また,マルチサンプル・アンチエリアスをフレーム・バッファ・オブジェクトに適用できるようになり,アンチエリアスされたテクスチャ生成が可能となりました.これにより,ユーザ・インターフェースのアイコン部分の高画質化が可能になります.
このほか,オクルージョン・クエリの機能により,実際に描画が行われた目に見える(Visibleな)ピクセルの数を呼び出せるようになりました.グラフィックス・アプリケーションからピクセル数を取得できれば,シーン内のどのオブジェクトを選択して描画するべきかの参考となり,シーン描画の最適化が測れます.特に,家庭用ゲーム機のゲーム・アプリケーションはシーン全体のポリゴン数が多いため,オクルージョン・クエリを用いたシーン管理が多く行われています.
●2種類の圧縮テクスチャ・フォーマットを発表
今回,OpenGL ES 3.0の発表に合わせて,ETC2/EAC,およびASTCの2種類の圧縮テクスチャ・フォーマットが発表されました.
1) ETC2/EACフォーマット
今回のアップデートで,ETCテクスチャの改善,およびコア仕様化が発表されました(図7).Khronos標準の圧縮テクスチャ・フォーマットとして,ETCフォーマットはOpenGL ES 1.1/2.0で既に使用可能となっていました.ただし,これらの仕様は拡張仕様として定義されていたため,GPUにおけるサポートが必須となっていませんでした.ちなみに,この圧縮テクスチャ・フォーマットはスウェーデンのEricsson社によって開発され,研究論文ではPackman,iPackmanとして発表されていました.
図7 ETC2 / EACテクスチャ圧縮
出典:SIGGRAPH 2012 Khronos media session資料
ETCフォーマットが,GPUによるサポートが必須のコア仕様として定義されるのに加えて,ETCの画質改善版であるETC2フォーマット,およびα成分向け拡張を含めたEACフォーマットのサポートも発表されました.
2) ASTCフォーマット
ETCのアップデートと同時に,今回新たにASTC圧縮テクスチャ・フォーマットがKhronos標準のフォーマットとして発表されました(図8).OpenGL ES 3.0 APIでは,以前のETCがそうであったように,拡張仕様として定義されています.今後のバージョンでコア仕様になっていく可能性があります.
図8 Khronos ASTCテクスチャ圧縮
出典:SIGGRAPH 2012 Khronos media session資料
このASTCは,英国ARM社が提案したテクスチャ圧縮フォーマットで,業界でよく使われる圧縮テクスチャ・フォーマットであるS3TCやPVRTCよりも品質が高く,ETC2と比べても少し画質が改善されています.また,α成分もサポートしています.Khronos Groupによる標準化とOpenGL ES 3.0の対応により,ASTCフォーマットをサポートしたGPUが登場し,今後,普及が進む可能性があります.
なお,いずれのフォーマットも,各社からKhronos Groupに無償提供されており,開発者やベンダはロイヤリティ・フリーで使用することができます.
●従来バージョンよりOpenGL ES 3.0の普及は早い
OpenGL ESが1.1から2.0へバージョンアップしたとき,プログラマブル・シェーダ(頂点情報やピクセル描画方法をプログラミングによってユーザがカスタマイズする機能)が追加されました.これと比べると,今回の3.0への移行では,大きな機能追加やパイプラインの変更はあまりなく,フォーマットの追加や制限の撤廃といった細かな改善が中心となっています(例えば,ジオメトリ・シェーダは今回のバージョンアップでは追加されなかった).
前バージョンのOpenGL ES 2.0は,今でこそ多くのGPUが当たり前のようにサポートしていますが,5年前の仕様公開当時はまったく対応されておらず,普及に時間がかかったと言えます.今回のOpenGL ES 3.0の場合,機能的にはマイナなアップデートであるのと,現在のOpenGL ES 2.0普及の状況,近年のタブレットやスマートフォンの進化を考えると,今年(2012年)から来年(2013年に)にかけて対応GPUが登場し,一気に普及する可能性があります.
おおぶち・えいさく
(株)ディジタルメディアプロフェッショナル
取締役 開発部長
※ 次ページに関連コラム「グラフィックスAPIを策定しているKhronos Group」を掲載しています.