Metal (API)

Metal（メタル）はAppleのオペレーティングシステム上でサポートされる、オーバーヘッドの小さいローレベル（low level）なコンピュータグラフィックスAPIである。Metalでは、OpenGLとOpenCLに似た機能を一つのAPIに統合している。Metalはクロノス・グループによるVulkanや、マイクロソフトによるWindows向けのDirect3D 12といった、他のプラットフォームにおける類似のAPIによるパフォーマンス上の利点をmacOS／iPadOS／iOSにもたらしている。

MetalはC++11をベースとした新しいシェーディング言語、Metal Shading Language（MSL）を利用する。これはClangとLLVMによって実装されている。Metalはコンピュートシェーダーを導入することでGPGPUプログラミングのしやすさも向上している。

macOS Ventura, iOS/iPadOS 16のMetal 3では、MetalFX Upscalingという超解像度技術を実装している。

macOS Sonomaでは、Xcode 15向けThe Game Porting ToolkitのMetal shader converterで、Windows向けゲームを移植する際、DirectX 12からMetal 3へ変換できる。

対応環境 
2023年現在、Metal 3での動作条件は、A13 Bionic以上を搭載したiPhoneとiPad、AppleシリコンまたはIntel UHD Graphics 630以降のGPUを搭載したMacが必須となっている。対応OSは、macOS Ventura, iOS 16, iPadOS 16以降である。

初期のMetalはApple A7以降を搭載したiOS機器、およびOS X El Capitan以降が動作する一部のMacコンピュータで利用可能であった。OS X El Capitanに対応しているMacであっても、Metalに対応しているとは限らない。

2017年10月時点でのMetal及びMetal2対応Macコンピュータは以下の通り。

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はWWDC 2014にて発表され、iOS 8で初めて導入された。

macOSでのMetalのサポート（Metal for Mac）はWWDC 2015において発表された。

パフォーマンス 
Metalの登場以前は、macOSにはOpenGLが、そしてiOSにはOpenGL ESがそれぞれ提供されていたが、いずれも高度にハードウェアが抽象化されていることから性能上のオーバーヘッドが大きい。Metalは以下のような理由から、OpenGLよりも優れたパフォーマンスを期待できる。

 シェーダーの事前コンパイルおよび最適化や、前もって実行されるステートの結合と評価（Validation）
 GPUとCPUの明確な同期
 GPUとCPUで共有されるメモリ空間
 より小さくなったドライバのオーバーヘッド

これらのうちいくつかは、GPUでコマンドを実行するために必要になるCPUのタスクを低減する。そのため、他の仕事のためにCPUを使えるようになり、全般的なパフォーマンスの向上につながる。

脚注

注釈

出典

関連項目 
 Direct3D 12 - DirectX 12において導入されたローレベル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 の非公式な実装（商用）

コンピュータグラフィックス
グラフィックライブラリ