Googleは2015年8月10日、Androidが次世代グラフィックスAPI「Vulkan」に対応することを明らかにしました。
Vulkan は業界標準の OpenGL や OpenCL と同じ規格化団体 Khronosグループが策定する次世代のグラフィックスAPI。CPUのオーバーヘッドをなくしマルチスレッドに最適化することで、同じハードウェアでも劇的にグラフィック性能が向上します。
「Vulkan」は、これまで「Next Generation OpenGL Initiative」と呼ばれてきた次世代API。現在広く使われている OpenGL ES はモダンなGPUアーキテクチャに対応しきれていないため、GPUが速くても命令やデータを受け渡す際にドライバの段階で処理が挟まり、結果として性能が限られる場合があります。
Vulkanでは CPUのオーバーヘッドを最小化し、アプリケーション側からビデオハードウェアを直接制御することで、同じハードウェアでもグラフィック描画を大幅に効率化します(対応さえしていれば)。またローレベルなレンダリングに対応しつつ、規格化団体のKhronosグループが策定するオープンスタンダードとして、モバイルだけでなく多数のプラットフォームや、さまざまなGPUハードウェアに対応する点も特徴です。
Androidのライバルとなる iOSでは、Vulkan 同様にオーバーヘッドを少なくするグラフィックスAPI「Metal」を iOS 8以降・A7プロセッサ以降で採用しています。次世代規格への対応が明かされ Androidファンとしても一安心と言ったところでしょうか。
下は試作版「Vulkan」と従来のOpenGL ESでノームの群れを描写する比較動画。OpenGL ES側のFPSが激減して紙芝居のようになる場面であっても、試作版「Vulkan」は安定したFPSで滑らかな描画を提供しています。
注目すべきは左下にあるCPUの負荷率を示したグラフです。大量のノームを描写するシーンでは、OpenGL ESが特定のスレッドに負荷を集中させた上にFPSを大きく落としているのに対し、試作版「Vulkan」では処理が全てのスレッドに分散されたおかげで処理落ちもほとんど見られません。マルチスレッドCPUに対応した効率化が図られた「Vulkan」の面目躍如といったところでしょう。
「Vulkan」の導入により、Androidアプリにおけるグラフィックスや処理速度の向上が期待できます。近年はモバイルゲームにおいてもグラフィックスのリッチ化が進行しています。グラフィックス関係の効率化を図ってくれたおかげで、これまで見られなかった表現が実現されるなら「Vulkan」様々といったところでしょうか。
「Vulkan」はゲームをやらない人にとっても注目のテクノロジーかも知れません。グラフィックスのリッチ化はなにもゲームに限ったものではなく、写真や映像を加工するアプリはもちろん、メッセージアプリですらグラフィカルな処理が使われることも多くなっているからです。
これまではリッチなアプリだとスマートフォンが爆熱になり、電池の残量がもの凄い勢いで減っていくのが常でしたが、「Vulkan」対応アプリにより、見た目は綺麗でも電力消費がそこそこになってくれるとありがたいところでしょう(ただ、ゲームの場合は開発者が性能をギリギリまで使いたがるため、電池が減るスピードはあまり変わらないと思われます)。
Vulkan は2015年後半を目指して開発が進行中。Android側も Khronos と密接に協力を続けるとしています。