今年の世界開発者会議では、新技術のプレゼンテーションが特に盛んに行われましたが、その中でも Apple の新しいグラフィック技術 Metal は、その正確な利点を理解するのが最も難しいものの、おそらく最も魅力的なデモでした。
簡単に言うと、MetalはAppleのグラフィックプロセッサプログラミングにおける新しい手法です。Appleはハードウェアを変更することなくパフォーマンス向上を実現し、60フレーム/秒のレンダリングを維持しながらゲームをより精細に表現できると主張しています。魔法のように聞こえますが、実際はそうではありません。まさに現実です。
最先端の技術
Metal の概要は、その名の通り、A7 のハードウェア、つまり「金属」のロックを解除することです。
グラフィックプロセッサは、本質的に巨大な「ステートマシン」です。1970年代風のスイッチとダイヤルが並んだ巨大なボードを想像してみてください。それぞれのスイッチとダイヤルには特定の機能がラベル付けされています。すべての機能の組み合わせがマシンでサポートされているわけではありませんが、スイッチは自由に切り替えられます。切り替えたスイッチと調整したダイヤルの組み合わせが、「システムの状態」を決定します。
グラフィックスプログラマーの仕事は、適切なスイッチを切り替え、ダイヤルを適切な位置に回し、プロセッサにジオメトリ情報を送ることです。AppleがMetalが1フレームあたりどれだけ多くの「ドローコール」を実行できるかについて言及する際に言及しているのは、まさにこの一連の動作です。
OpenGL はゲーム開発者向けにハードウェアを抽象化しますが、オーバーヘッドがかなり大きくなります。
グラフィックス作成の現在の標準であるOpenGLでは、プログラマーはこれらのスイッチを一つ一つ切り替え、ダイヤルを一つ一つ個別に調整していました。そのたびに、グラフィックスプロセッサは巨大なマシンの状態がまだ有効であることを確認する必要がありました。
一方、Metalを使用すると、プログラマーはマシンに必要な状態を定義し、その状態を適用するだけで済みます。ダイヤルを一つ一つ調整したり、スイッチを切り替えたり、必要な手順を踏んだりする代わりに、メニューから寿司の注文をチェックしていくようなプロセスになります。
Metal を使用すると、ゲーム開発者はデバイスが使用しているハードウェアの利点をより簡単に享受できるようになります。
ユーザーの観点から見ると、これらの詳細はどれも重要ではありません。しかし、その影響は確実に認識されるでしょう。
Metalは、今日のGPUとCPU、特にAppleのA7の仕組みに基づいて設計されています。A7はGPUとCPUを1つのチップに統合し、単一のメモリプールを共有しています。
OpenGLの多くは、GPUが別のカードに搭載されている(または搭載される可能性がある)という概念を前提としています。GPUとCPUが同じメモリにアクセスできるという事実を認識することで、Metalは大きなパワーを発揮します。描画に必要なリソースの管理がはるかに容易かつ高速になります。反射などの多くのエフェクトでは、シーンを画像として描画し、その画像を最終シーンの入力として使用する必要があります。Metalはこれをはるかに容易にします。
WWDC 基調講演では、ゲーム開発者たちが Metal の力で実現した印象的なシーンを披露しました。
現代のGPUとCPUはどちらも複数のコアを備えており、同時に歩いたり、話したり、ガムを噛んだり、ジャグリングしたりすることができます。Metalは、グラフィックスコマンドのマルチプロセス化を可能にすることで、そのパワーをすべて解き放ちます。一方、OpenGLは常にシングルスレッドであったため、ハードウェアを同様に効率的に使用することはできませんでした。
Metal が実現するのは、グラフィック性能の向上だけではありません。いわゆる「汎用グラフィックユニットコンピューティング」モデルもサポートしています。これは、GPU を使ってグラフィックに必ずしも関連しないソフトウェアを実行することです。Mac ユーザーに馴染みのある OpenCL は、GPU 上で実行されるソフトウェアを作成するためのオープンスタンダードです。Metal は、この種の汎用グラフィックプログラミング機能を iOS にもたらします。その名の通り、OpenCL は OpenGL と非常によく似ており、Metal の設計は OpenGL と同様のメリットを OpenCL にもたらします。プロセッサ間でメモリを共有するという組み込みの考え方も、ここで大きなメリットとなります。
Metal の利点は多岐にわたり、ゲームやグラフィックだけに当てはまるものではありません。
マルチスレッドアクセスでも同様です。Metalの汎用コンピューティング能力により、A7が予想外の形で真価を発揮し始めるでしょう。Capoのようなアプリは、OS Xと同様にiOSでもGPUを活用し、これまで不可能だったソフトウェアタスクを実行できるようになるでしょう。
すべての人に利益をもたらす
もちろん、それはそれで良いことですが、iOSデバイスユーザーの観点から見ると、これは一体何を意味するのでしょうか?ある意味で、Metalのような進歩は大型ハドロン衝突型加速器の建設に似ています。どのような可能性が生まれるかは正確には分かりませんが、それは素晴らしい新世界であり、可能性に満ちた世界なのです。
より実用的な意味では、読み込み時間の短縮 (リソース管理の改善、プリコンパイルされたシェーダーなどによる)、より詳細な世界 (描画呼び出しの高速化により、より多くの処理や描画が可能)、そして GPU を計算プラットフォームとして使用できるアプリケーションの大量提供など、ユーザーが確実に喜ぶ具体的なメリットがあります。
もちろん、これらのアプリはMetalが導入されたからという理由だけで登場したわけではありません。開発者は新しいシステムを採用し、それに特化したソフトウェアを開発する必要があります。しかし、iOSプラットフォームの大手ゲーム会社が既にMetalへの対応に取り組んでいることは朗報です。二大ゲームエンジンであるUnrealとUnityは、どちらもMetalのサポートを発表しています。つまり、開発者がMetal対応エンジンの理解と実装に投資しなくても、これらのシステムを採用している多くの大規模ゲームは、いずれにしてもMetalの改善の恩恵を受けることができるのです。
最も人気のあるエンジンのいくつかはすでに Metal のサポートを発表しており、開発者は大規模な再コーディングを行わなくてもメリットを得ることができます。
技術的な詳細から一歩引いて考えると、Metalには興味深い政治的意味合いもある。Appleは、機会があればいつもそうするように、自らの運命を自らの手で握ろうとしている。OpenGLとOpenCLの責任者であるKhronos Groupに縛られることなく、AppleはMetalに好きなだけ迅速に変更を加え、自社のハードウェアに最適な対応を継続できるのだ。
これは大きな戦略的動きです。なぜなら、Appleが独自の道を切り開くのに十分な開発者基盤とデバイスを保有していると考えていることを示しているからです。この点を否定するのは難しいでしょう。また、Appleがこれまで以上にゲームに真剣に取り組んでいることも示しています。Appleはこれまでゲーム向けの優れたプラットフォームを持っていなかったことで有名ですが、iOSの登場によって状況は変わりました。そして、Apple自身も変わりつつあるようです。Metalと、その開発とサポートへのAppleの投資は、同社が今やゲームに真剣に取り組んでいることを示しています。
これは、OpenGL(またはOpenCL)が消滅したり、本来の目的を果たさなくなるという意味ではありません。OpenGL(またはOpenCL)が最適なアプリケーションは依然として数多く存在します。しかし、MetalはA7のような最新チップの低レベルで、より高精度なモデルです。Metalを使用するアプリケーションが登場し始めれば、A7の真の実力が明らかになるでしょう。