「Metal (API)」の版間の差分
m セクションリンク切れの修正 |
m Bot作業依頼: iOSの改名提案に伴う内部リンク修正依頼 (iOS) - log |
||
12行目: | 12行目: | ||
| website = {{URL|https://developer.apple.com/jp/metal/}} |
| website = {{URL|https://developer.apple.com/jp/metal/}} |
||
}} |
}} |
||
'''Metal'''(メタル)は[[Apple]]の[[オペレーティングシステム]]上でサポートされる、[[オーバーヘッド]]の小さいローレベル(low level)な[[コンピュータグラフィックス]][[アプリケーションプログラミングインタフェース|API]]である。Metalでは、[[OpenGL]]と[[OpenCL]]に似た機能を一つのAPIに統合している。Metalは[[クロノス・グループ]]による[[Vulkan (API)|Vulkan]]や、[[マイクロソフト]]による[[Microsoft Windows|Windows]]向けの[[Direct3D|Direct3D 12]]といった、他のプラットフォームにおける類似のAPIによるパフォーマンス上の利点を[[macOS]]/[[ |
'''Metal'''(メタル)は[[Apple]]の[[オペレーティングシステム]]上でサポートされる、[[オーバーヘッド]]の小さいローレベル(low level)な[[コンピュータグラフィックス]][[アプリケーションプログラミングインタフェース|API]]である。Metalでは、[[OpenGL]]と[[OpenCL]]に似た機能を一つのAPIに統合している。Metalは[[クロノス・グループ]]による[[Vulkan (API)|Vulkan]]や、[[マイクロソフト]]による[[Microsoft Windows|Windows]]向けの[[Direct3D|Direct3D 12]]といった、他のプラットフォームにおける類似のAPIによるパフォーマンス上の利点を[[macOS]]/[[iOS]]にもたらしている。 |
||
Metalは[[C++11]]をベースとした新しい[[シェーディング言語]]、'''Metal Shading Language'''(MSL)を利用する。これは[[Clang]]と[[LLVM]]によって実装されている<ref>{{Cite web|url=https://developer.apple.com/library/ios/documentation/Metal/Reference/MetalShadingLanguageGuide/Introduction/Introduction.html|title=Metal Shading Language Guide|date=2014-09-17|publisher=アップル|accessdate=2015-10-28}}</ref>。Metalは[[シェーダー#コンピュートシェーダー|コンピュートシェーダー]]を導入することで[[GPGPU]]プログラミングのしやすさも向上している{{efn2|OpenGL 4.3/OpenGL ES 3.1以降でもコンピュートシェーダーはサポートされるが、Metal登場時にmacOS/iOSはこれらのAPIをサポートしていなかった。}}。 |
Metalは[[C++11]]をベースとした新しい[[シェーディング言語]]、'''Metal Shading Language'''(MSL)を利用する。これは[[Clang]]と[[LLVM]]によって実装されている<ref>{{Cite web|url=https://developer.apple.com/library/ios/documentation/Metal/Reference/MetalShadingLanguageGuide/Introduction/Introduction.html|title=Metal Shading Language Guide|date=2014-09-17|publisher=アップル|accessdate=2015-10-28}}</ref>。Metalは[[シェーダー#コンピュートシェーダー|コンピュートシェーダー]]を導入することで[[GPGPU]]プログラミングのしやすさも向上している{{efn2|OpenGL 4.3/OpenGL ES 3.1以降でもコンピュートシェーダーはサポートされるが、Metal登場時にmacOS/iOSはこれらのAPIをサポートしていなかった。}}。 |
||
29行目: | 29行目: | ||
*Mac Pro(Mid 2010 以降)でMetalをサポートするGPU(Nvidia [[NVIDIA GeForce#GeForce 600 Series|Kepler]]以降、ATI [[Graphics Core Next]]以降)を搭載したもの |
*Mac Pro(Mid 2010 以降)でMetalをサポートするGPU(Nvidia [[NVIDIA GeForce#GeForce 600 Series|Kepler]]以降、ATI [[Graphics Core Next]]以降)を搭載したもの |
||
Metalは[[Worldwide Developers Conference|WWDC]] 2014にて発表され、[[iOS |
Metalは[[Worldwide Developers Conference|WWDC]] 2014にて発表され、[[iOS#iOS 8.x|iOS 8]]で初めて導入された<ref>[http://av.watch.impress.co.jp/docs/series/rt/20140606_652046.html 【西田宗千佳のRandomTracking】WWDC 2014 開発環境編:「機器の外の魅力」で戦う準備を進めるアップル - AV Watch]</ref>。 |
||
macOSでのMetalのサポート(Metal for Mac)は[[Worldwide Developers Conference|WWDC]] 2015において発表された。 |
macOSでのMetalのサポート(Metal for Mac)は[[Worldwide Developers Conference|WWDC]] 2015において発表された。 |
2021年11月10日 (水) 04:49時点における版
開発元 | Apple |
---|---|
初版 | 2014年6月 |
最新版 |
3
/ 2019年6月 |
プログラミング 言語 | シェーディング言語: C++14, ランタイム/API: Objective-C |
対応OS | iOS, iPadOS, macOS, tvOS |
種別 | 3Dグラフィックス・演算用API |
ライセンス | プロプライエタリ |
公式サイト |
developer |
Metal(メタル)はAppleのオペレーティングシステム上でサポートされる、オーバーヘッドの小さいローレベル(low level)なコンピュータグラフィックスAPIである。Metalでは、OpenGLとOpenCLに似た機能を一つのAPIに統合している。Metalはクロノス・グループによるVulkanや、マイクロソフトによるWindows向けのDirect3D 12といった、他のプラットフォームにおける類似のAPIによるパフォーマンス上の利点をmacOS/iOSにもたらしている。
MetalはC++11をベースとした新しいシェーディング言語、Metal Shading Language(MSL)を利用する。これはClangとLLVMによって実装されている[1]。Metalはコンピュートシェーダーを導入することでGPGPUプログラミングのしやすさも向上している[注 1]。
対応環境
MetalはApple A7以降を搭載したiOS機器、およびOS X El Capitan以降が動作する一部のMacコンピュータで利用可能である。OS X El Capitanに対応しているMacであっても、Metalに対応しているとは限らない。
2017年10月時点でのMetal及びMetal2対応Macコンピュータは以下の通り[2]。
- 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で初めて導入された[3]。
macOSでのMetalのサポート(Metal for Mac)はWWDC 2015において発表された。
パフォーマンス
Metalの登場以前は、macOSにはOpenGLが、そしてiOSにはOpenGL ESがそれぞれ提供されていたが、いずれも高度にハードウェアが抽象化されていることから性能上のオーバーヘッドが大きい。Metalは以下のような理由から、OpenGLよりも優れたパフォーマンスを期待できる[4]。
- シェーダーの事前コンパイルおよび最適化や、前もって実行されるステートの結合と評価(Validation)
- GPUとCPUの明確な同期
- GPUとCPUで共有されるメモリ空間
- より小さくなったドライバのオーバーヘッド
これらのうちいくつかは、GPUでコマンドを実行するために必要になるCPUのタスクを低減する。そのため、他の仕事のためにCPUを使えるようになり、全般的なパフォーマンスの向上につながる。
脚注
注釈
- ^ OpenGL 4.3/OpenGL ES 3.1以降でもコンピュートシェーダーはサポートされるが、Metal登場時にmacOS/iOSはこれらのAPIをサポートしていなかった。
出典
- ^ “Metal Shading Language Guide”. アップル (2014年9月17日). 2015年10月28日閲覧。
- ^ “Metal に対応している Mac コンピュータの一覧”. アップル (2017年10月10日). 2017年11月14日閲覧。
- ^ 【西田宗千佳のRandomTracking】WWDC 2014 開発環境編:「機器の外の魅力」で戦う準備を進めるアップル - AV Watch
- ^ “Unity - Unity Japan Official Blog – Metal, iOS 8 の新グラフィクス API”. Unity Technologies Japan G.K. (2014年7月4日). 2015年10月28日閲覧。
関連項目
- 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 の非公式な実装(商用)