Metal (API)




Metal(メタル)はアップルのオペレーティングシステム上でサポートされる、オーバーヘッドの小さいローレベル(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]




目次






  • 1 対応環境


  • 2 パフォーマンス


  • 3 脚注


    • 3.1 注釈


    • 3.2 出典




  • 4 関連項目


  • 5 外部リンク





対応環境


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を使えるようになり、全般的なパフォーマンスの向上につながる。



脚注



注釈





  1. ^ OpenGL 4.3/OpenGL ES 3.1以降でもコンピュートシェーダーはサポートされるが、Metal登場時にmacOS/iOSはこれらのAPIをサポートしていなかった。




出典





  1. ^ “Metal Shading Language Guide”. アップル (2014年9月17日). 2015年10月28日閲覧。


  2. ^ “Metal に対応している Mac コンピュータの一覧”. アップル (2017年10月10日). 2017年11月14日閲覧。


  3. ^ 【西田宗千佳のRandomTracking】WWDC 2014 開発環境編:「機器の外の魅力」で戦う準備を進めるアップル - AV Watch


  4. ^ “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 の非公式な実装(商用)






Popular posts from this blog

'app-layout' is not a known element: how to share Component with different Modules

android studio warns about leanback feature tag usage required on manifest while using Unity exported app?

WPF add header to Image with URL pettitions [duplicate]