Metal is a low-level, low-overhead hardware-accelerated 3D graphic and compute shader application programming interface (API) developed by Apple Inc., and which debuted in iOS 8. Metal combines functions similar to OpenGL and OpenCL under one API. It is intended to bring to iOS, macOS, and tvOS apps some of the performance benefits of similar APIs on other platforms, such as Vulkan (which debuted in mid-February 2016) and DirectX 12.
|Initial release||June 2014|
|Operating system||iOS, macOS, tvOS|
|Type||3D graphics and compute API|
Metal is an object-oriented API that can be invoked using the Swift or Objective-C programming languages. Full-blown control of the Metal framework (as well as the related MetalKit framework) is accessible via the Metal Unified Graphics and Compute Language. According to Apple promotional materials: "Metal is a C++ based programming language that developers can use to write code that is executed on the GPU for graphics and general-purpose data-parallel computations. Since Metal is based on C++, developers will find it familiar and easy to use. With Metal, both graphics and compute programs can be written with a single, unified language, which allows tighter integration between the two."
On June 5, 2017 at WWDC, Apple announced the second version of Metal, to be supported by macOS High Sierra, iOS 11 and tvOS 11. Metal 2 is not a separate API from Metal and is supported by the same hardware. Metal 2 enables more efficient profiling and debugging in Xcode, accelerated machine learning, lower CPU workload, support for virtual reality on macOS, and specificities of the Apple A11 GPU, in particular.
On iOS and tvOS, Metal supports Apple-designed SoCs from the Apple A7 or newer. On macOS, Metal supports Intel HD and Iris Graphics from the HD 4000 series or newer, AMD GCN-based GPUs, and Nvidia Kepler-based GPUs or newer.
Metal should have better performance than OpenGL, for several reasons:
- Precomputed shaders and up-front state validation
- Explicit synchronization between GPU and CPU
- Shared memory space between GPU and CPU
- Lower driver overhead
- Efficient multithreading: every CPU thread can send commands to the GPU.
Some of these points reduce the amount of work the CPU is required to do to successfully execute commands on the GPU. This can lead to overall performance gain because the CPU can then be used to compute other tasks.
According to Apple, more than 148,000 applications use Metal directly, and 1.7 million use it through high-level frameworks, as of June 2017. Presumably, most of these are applications and games on iOS. Notable macOS games using Metal for rendering are listed below.
|Title||Developer (macOS version)||Game engine||Release date (macOS)||Notes|
|Civilization VI||Aspyr||24 October 2016||Metal support since 5 April 2019|
|Dota 2||Valve Corporation||Source 2||18 July 2013||The use of MoltenVK to support Vulkan via Metal was announced on 26 February 2018. The option to use this became available on 31 May 2018.|
|Quake 2||id Software||Quake II engine||9 February 2019||The original game using MoltenVK to support Vulkan via Metal was released to the public as vkQuake2.|
|Rise of the Tomb Raider||Feral Interactive||Foundation engine||12 April 2018||Metal support shipping at launch|
|Shadow of the Tomb Raider||Feral Interactive||Foundation Engine||2019||Metal support shipping at launch|
|F1 2016||Feral Interactive||EGO Engine 4.0||6 April 2017||Metal support shipping at launch|
|Life is Strange 2||Feral Interactive||Unreal Engine 4||2019||Metal support shipping at launch|
|Life is Strange: Before the Storm||Feral Interactive||Unity Engine||13 September 2018||Metal support shipping at launch|
|Divinity: Original Sin 2||Larian Studios||Divinity Engine 2||31 January 2019||Metal support shipping at launch|
|Company of Heroes 2||Feral Interactive||Essence Engine 3||21 January 2015||Metal support since 19 October 2018|
|Sid Meier's Railroads!||Feral Interactive||Gamebryo||1 November 2012||Metal support since 18 December 2018|
|Warhammer 40,000: Dawn of War III||Feral Interactive||Essence Engine 4||9 June 2017||Metal support shipping at launch|
|Total War: Warhammer||Feral Interactive||Total War Engine 3||19 April 2017||Metal support shipping at launch|
|Total War: Warhammer 2||Feral Interactive||Total War Engine 3||20 November 2018||Metal support shipping at launch|
|Total War Saga: Thrones of Britannia||Feral Interactive||Total War Engine 3||24 May 2018||Metal support shipping at launch|
|Medieval II: Total War||Feral Interactive||Total War Engine 2||17 December 2015||Metal support since 25 October 2018|
|Hitman||Feral Interactive||Glacier Engine||20 June 2017||Metal support shipping at launch|
|Bioshock Remastered||Feral Interactive||Unreal Engine 2.5||22 August 2017||Metal support shipping at launch|
|F1 2017||Feral Interactive||EGO Engine 4.0||25 August 2017||Metal support shipping at launch|
|Deus Ex: Mankind Divided||Feral Interactive||Dawn Engine||12 December 2017||Metal support shipping at launch|
|DiRT Rally||Feral Interactive||EGO Engine 2.5||16 November 2017||Metal support shipping at launch|
|Ballistic Overkill||Aquiris Game Studio||Unity Engine 5||28 March 2017||Metal support shipping at launch|
|BattleTech||Harebrained Schemes||Unity Engine 5||24 April 2018||Metal support shipping at launch|
|Mafia III||Aspyr Media||Illusion Engine||11 May 2017||Metal support shipping at launch|
|World of Warcraft||Blizzard Entertainment||WoW Engine||23 November 2004||Metal support since August 2016|
|StarCraft II||Blizzard Entertainment||SC2 Engine||27 July 2010||Metal support in beta since 24 January 2017|
|Heroes of the Storm||Blizzard Entertainment||SC2 Engine||2 June 2015||Metal support in beta since 24 January 2017,
temporarily removed on 29 November 2017
|Fortnite||Epic Games||Unreal Engine 4||25 July 2017||Metal support shipping at launch|
|Obduction||Cyan Worlds||Unreal Engine 4||29 March 2017||Metal support shipping at launch|
|Everspace||Rockfish||Unreal Engine 4||26 May 2017||Metal support shipping at launch|
|Ark: Survival Evolved||Studio Wildcard||Unreal Engine 4||29 August 2017||Metal support shipping at launch|
|Observer||Bloober Team||Unreal Engine 4||24 October 2017||Metal support shipping at launch|
|Unreal Tournament||Epic Games||Unreal Engine 4||TBA||Metal support since January 2017|
|Refunct||Dominique Grieshofer||Unreal Engine 4||5 September 2016||Metal support shipping at launch|
|Cities: Skylines||Paradox Interactive||Unity Engine 5||10 March 2015||Metal support since 18 May 2017|
|Universe Sandbox 2||Giant Army||Unity Engine 5||TBA||Metal support in beta since June 2017|
|War Thunder||Gaijin Entertainment||Dagor Engine 4||1 November 2012||Metal support added 24 May 2017, removed at some point in 2018|
|The Witness||Thekla, Inc||Thekla Engine||8 March 2017||Metal support shipping at launch|
|Micro Machines World Series||Virtual Programming||Unity Engine 5||30 June 2017||Metal support shipping at launch|
|Guardians of the Galaxy: The Telltale Series||Telltale Games||Telltale Tool||18 April 2017||Metal support shipping at launch|
|Batman: The Enemy Within||Telltale Games||Telltale Tool||8 August 2017||Metal support shipping at launch|
|Minecraft: Story Mode - Season Two||Telltale Games||Telltale Tool||11 July 2017||Metal support shipping at launch|
|ARMA 3||Virtual Programming||Real Virtuality||TBA||Metal support in beta since 17 September 2017|
|MXGP3||Virtual Programming||Unreal Engine 4||23 November 2018||Metal support shipping at launch|
|Gravel||Virtual Programming||Unreal Engine 4||20 January 2019||Metal support shipping at launch|
|X-Plane 11||Laminar Research||Custom engine||30 May 2017||Metal support upcoming|
|Headlander||Double Fine Productions||Buddha Engine||18 November 2016||Metal support shipping at launch|
- McWhertor, Michael (September 9, 2014). "This is the game Apple used to show off iPhone 6". Polygon. Vox Media. Archived from the original on September 10, 2014. Retrieved September 9, 2014.
- Apple Inc. "Metal Shading Language Specification" (PDF).
- Machkovech, Same (2 June 2014). "Apple gets heavy with gaming, announces Metal development platform". Ars Technica. Condé Nast.
- Smith, Colin; Meza, Starlayne (8 June 2015). "Apple Announces OS X El Capitan with Refined Experience & Improved Performance". Newsroom. San Francisco: Apple.
- "Archived copy of the Metal homepage, November 2017". Apple Developer. Apple. November 20, 2017. Archived from the original on November 20, 2017 – via Wayback Machine.CS1 maint: BOT: original-url status unknown (link)
- "Metal Shading Language Guide". September 8, 2014. Retrieved September 10, 2014.
- "Metal, a new graphics API for iOS 8 – Unity Blog". Unity Technologies Blog. Retrieved 2017-06-16.
- Apple Inc. "WWDC 2017 Platforms State of the Union".
- Nestor, Marius. "Vulkan Support Is Finally Coming to Apple's macOS & iOS to Make Games Run Faster". softpedia. Retrieved 2018-02-28.
- Larabel, Michael (June 1, 2018). "Initial Vulkan Performance On macOS With Dota 2 Is Looking Very Good". Phoronix. Retrieved June 5, 2018.
- Kondrak, Krzysztof [@k_kondrak] (January 9, 2019). "vkQuake2 gets MacOS support" (Tweet). Retrieved February 9, 2019 – via Twitter.