Metalとは
Metalは、
Appleが開発したローレベルなグラフィックスAPIです。macOS、iPadOS、iOSといった
Appleの
オペレーティングシステム上で動作し、OpenGLやOpenCLといった従来のAPIよりも低オーバーヘッドで高いパフォーマンスを発揮します。Metalは、グラフィックス処理だけでなく、
GPGPU(General-Purpose computing on
Graphics Processing Units)プログラミングの効率化も実現します。
Metalの特徴
ローレベルAPI: ハードウェアに近いレベルでの制御が可能になり、より効率的なグラフィックス処理を実現します。
統合API: OpenGLとOpenCLの機能を統合し、一つのAPIでグラフィックス処理と並列計算を扱えます。
Metal Shading Language (MSL): C++11をベースとしたシェーディング言語を使用。ClangとLLVMによって実装されています。
GPGPU: コンピュート
シェーダーを導入し、並列処理による高速な計算が可能です。
MetalFX Upscaling: macOS Ventura, iOS/iPadOS 16で導入された超解像度技術により、高品質なレンダリングを実現します。
DirectX 12からの変換: macOS Sonomaでは、Xcode 15向けに提供されるGame Porting ToolkitのMetal shader converterにより、Windows向けゲームをMetalに移植できます。
対応環境
2023年現在、Metal 3は以下の環境で動作します。
iPhone: Apple A13 Bionic以降搭載モデル(iPhone 11/SE(第2世代)以降)
iPad: A13 Bionic以降搭載モデル(第9世代以降)
Mac: AppleシリコンまたはIntel UHD Graphics 630以降のGPU搭載モデル
OS: macOS Ventura, iOS 16, iPadOS 16以降
初期のMetalは、
Apple A7以降搭載のiOS機器、およびOS X El Capitan以降が動作する一部のMacコンピュータで利用可能でした。しかし、OS X El Capitanに対応しているMacでも、Metalに対応していない場合があります。
Metal及びMetal2対応のMacコンピュータ(2017年10月時点)
iMac (Late 2012 以降)
MacBook (Early 2015 以降)
MacBook Pro (Mid 2012 以降)
MacBook Air (Mid 2012 以降)
Mac mini (Late 2012 以降)
Mac Pro (Late 2013 以降)
Mac Pro (Mid 2010 以降) かつ MetalをサポートするGPU(Nvidia Kepler以降、ATI Graphics Core Next以降)を搭載したもの
Metalは2014年のWWDCで発表され、iOS 8で初めて導入されました。macOSでのMetalサポート(Metal for Mac)は2015年のWWDCで発表されました。
パフォーマンス
Metal以前は、macOSにはOpenGL、iOSにはOpenGL ESが提供されていました。しかし、これらのAPIはハードウェアの抽象化度が高く、性能上のオーバーヘッドが大きくなっていました。Metalは以下の理由から、OpenGLよりも優れたパフォーマンスを発揮します。
シェーダーの事前コンパイルと最適化: 実行前に
シェーダーをコンパイルし、最適化することで、実行時のオーバーヘッドを低減します。
ステートの結合と評価: グラフィックス処理の状態を事前に結合・評価することで、実行時の処理を効率化します。
CPUとGPUの同期:
CPUとGPU間の同期を明確化することで、効率的なデータ転送を実現します。
CPUとGPUで共有されるメモリ空間: CPUとGPUで共有されるメモリ空間を利用することで、データ転送のオーバーヘッドを削減します。
ドライバのオーバーヘッドの削減: ドライバのオーバーヘッドを削減し、より効率的な処理を実現します。
これらの最適化により、GPUコマンド実行に必要な
CPUタスクを低減し、
CPUを他の処理に活用できるようになり、システム全体のパフォーマンスが向上します。
関連項目
Direct3D 12: Microsoftが開発したローレベルAPI。
Glide: 3dfxが開発したローレベルAPI。
Mantle (API): AMDが開発したローレベルAPI。
Vulkan (API): OpenGLの後継となるクロスプラットフォームなローレベルAPI。MoltenVKによりMetal上で動作させることも可能です。
外部リンク
Metal for Developers - Apple Developer
Metal Programming Guide
Metal Shading Language Guide
Metal Framework Reference
*
MoltenGL – Molten - Metal 上の OpenGL ES 2.0 の非公式な実装(商用)