Metalは、 Appleが開発した低レベルでオーバーヘッドの少ないハードウェアアクセラレーション対応の3DグラフィックスおよびコンピュートシェーダーAPIで、 iOS 8で初登場しました。Metalは、 OpenGLとOpenCLに似た機能を1つのAPIに統合しています。iOS 、iPadOS、macOS、tvOS、visionOS ( watchOSは除く)上のアプリに対してGPUハードウェアへの低レベルアクセスを提供することで、パフォーマンスの向上を目指しています。VulkanやDirectX 12など、他のプラットフォームの低レベルAPIと類似しています。
Metalは、 Swift、Objective-C、またはC++17 [ 4 ]プログラミング言語を使用して呼び出すことができるオブジェクト指向APIです。本格的なGPU実行は、Metal Shading Language(MSL)を介して制御されます。[ 5 ]
Metalは、GPUへの低オーバーヘッドアクセスを提供することを目的としています。コマンドは事前にエンコードされ、非同期実行のためにGPUに送信されます。アプリケーションは実行完了を待つタイミングを制御するため、アプリケーション開発者は、コマンドがGPUで実行されている間に他のコマンドをエンコードしてスループットを向上させたり、GPU実行の完了を明示的に待つことで電力を節約したりできます。さらに、コマンドのエンコードはCPUに依存しないため、アプリケーションは各CPUスレッドにコマンドを個別にエンコードできます。最後に、レンダリング状態は事前に計算されるため、GPUドライバはコマンド実行前にレンダリングパイプラインをどのように構成および最適化するかを事前に知ることができます。[ 6 ]
Metalは、コンピュートシェーダーを使用することでGPGPUプログラミングの機能を向上させます。Metalは、 ClangとLLVMを使用して実装されたC++14ベースの特定のシェーディング言語を使用します。[ 7 ]
Metal を使用すると、アプリケーション開発者はバッファやテクスチャなどの Metal リソースを作成できます。リソースは CPU、GPU、またはその両方に割り当てることができ、割り当てられたリソースを更新および同期する機能を提供します。Metal は、コマンドエンコーダのライフサイクル中にリソースの状態を強制することもできます。[ 8 ] [ 9 ]
macOS では、Metal により、アプリケーション開発者はどの GPU を実行するかを指定できます。アプリケーション開発者は、CPU の低電力統合 GPU、ディスクリート GPU (特定の MacBook および Mac に搭載)、または Thunderbolt 経由で接続された外部 GPU のいずれかを選択できます。アプリケーション開発者は、GPU コマンドをどの GPU で実行するかについても優先順位を付けることができ、特定のコマンドを実行するのに最も効率的な GPU についての提案も提供されます (シーンをレンダリングするコマンドはディスクリート GPU で実行でき、後処理と表示は統合 GPU で処理できます)。[ 10 ]
Metal Performance Shadersは、アプリケーション開発者が優れたパフォーマンスを実現すると同時に、GPUファミリー固有の機能の保守作業を軽減するのに役立つ、高度に最適化されたグラフィックス関数ライブラリです。[ 11 ]次のような機能を提供します。
Metalは、 Apple A7以降を搭載したiOSデバイスでは2014年6月2日から利用可能で[ 12 ] 、 OS X El Capitanを実行しているMac(2012年モデル以降)では2015年6月8日から利用可能になっている[ 13 ]。
2017年6月5日、WWDCでAppleはmacOS High Sierra、iOS 11、tvOS 11でサポートされるMetalの第2バージョンを発表しました。Metal 2はMetalとは別のAPIではなく、同じハードウェアでサポートされます。Metal 2は、 Xcodeでのプロファイリングとデバッグの効率化、機械学習の高速化、 CPU負荷の軽減、 macOSでの仮想現実のサポート、特にApple A11 GPUの特性を実現します。 [ 14 ]
2020年のWWDCで、AppleはMacのAppleシリコンへの移行を発表しました。Appleシリコンを使用するMacは、macOSとiOSでこれまで利用可能だった機能を組み合わせたApple GPUを搭載し、Apple GPUのタイルベース遅延レンダリング(TBDR)アーキテクチャに合わせた機能を活用できるようになります。 [ 15 ]
2022年のWWDCで、AppleはMetalの第3バージョン(Metal 3)を発表しました。これはmacOS Ventura、iOS 16、iPadOS 16のリリースと同時に登場します。Metal 3では、MetalFXアップスケーリングフレームワークが導入され、高性能アップスケーリングとアンチエイリアシング、メッシュシェーダーのサポートにより、複雑なシーンをフレームあたりの処理時間を短縮してレンダリングします。[ 16 ]また、Metal APIにC/C++を使用できる可能性も発表されました。[ 17 ]
2023年のWWDCで、AppleはWindows 10/11ベースのゲームを移植するためのGame Porting Toolkitと呼ばれる新しいツールキットを発表しました。これにはバイナリをテストする環境、HLSLからMSLへの変換レイヤー、およびMetal-cppバインディングが含まれています。Jeremy SandmelはmacOS Sonomaの新しいゲームモードを発表し、小島秀夫はmacOS App Store向けにDeath Strandingを発表しました。 [ 18 ]
2024年のWWDCで、AppleはGame Porting Toolkit 2を発表し、macOS向けにControl: Ultimate Edition、Frostpunk 2、Assassin's Creed Shadowsなどの新作ゲームをリリースした。[ 19 ]
2025年のWWDCで、AppleはMetal 4を発表しました。これは、統一されたコマンドエンコーダーシステム、ニューラルレンダリングのサポート、MetalFXフレーム補間やレイトレーシングデノイザーなどの新技術を特徴とするAPIの新バージョンです。[ 20 ]
Metalの最初のバージョンは、以下のハードウェアとソフトウェアをサポートしています。[ 21 ]
Metalの第2バージョンは、以下のハードウェアとソフトウェアをサポートしています。
Metalの第3バージョンは、以下のハードウェアとソフトウェアをサポートしています。[ 22 ]
Metalの第4バージョンは、以下のハードウェアおよびソフトウェアをサポートしています。
Appleによると、 2017年6月時点で、14万8000以上のアプリケーションがMetalを直接使用しており、170万のアプリケーションがハイレベルフレームワークを介してMetalを使用している。 [ 24 ] Metalを使用してレンダリングを行うmacOSゲームは以下のとおりである。