Metal (API)

From Wikipedia, the free encyclopedia

Template:Short description Script error: No such module "Distinguish". Template:DMCA

Page Module:Infobox/styles.css has no content.

Metal
[[Programmer|DeveloperTemplate:Pluralize from text]]Apple Inc.
Initial releaseJune 2014; 12 years ago (2014-06)
Template:Infobox software/simple
Written inMetal Shading Language (C++14-based in Metal 1–3, C++17-based in Metal 4),
Metal GPU Drivers: C/C++[2][3],
Metal Runtime: Objective-C, C/C++,
Metal API: Objective-C, Swift, C++ (binding via metal-cpp)
EnginePage Template:Plainlist/styles.css has no content.Template:EditAtWikidata
Operating systemiOS, iPadOS, macOS, tvOS and visionOS
Type3D graphics and compute API
LicenseProprietary
Websitedeveloper.apple.com/metal/
RepositoryPage Template:Plainlist/styles.css has no content.

Script error: No such module "Check for conflicting parameters".

Metal is a low-level, low-overhead hardware-accelerated 3D graphic and compute shader API created by Apple, debuting in iOS 8. Metal combines functions similar to OpenGL and OpenCL in one API. It is intended to improve performance by offering low-level access to the GPU hardware for apps on iOS, iPadOS, macOS, tvOS and visionOS (though not watchOS). It is similar to low-level APIs on other platforms such as Vulkan and DirectX 12.

Metal is an object-oriented API that can be invoked using the Swift, Objective-C or C++17[4] programming languages. Full-blown GPU execution is controlled via the Metal Shading Language.[5]

Features

Metal aims to provide low-overhead access to the GPU. Commands are encoded beforehand and then submitted to the GPU for asynchronous execution. The application controls when to wait for the execution to complete thus allowing application developers to increase throughput by encoding other commands while commands are executed on the GPU or save power by explicitly waiting for GPU execution to complete. Additionally, command encoding is CPU independent thus applications can encode commands to each CPU thread independently. Lastly, render states are pre-computed beforehand, allowing the GPU driver to know in advance how to configure and optimize the render pipeline before command execution.[6]

Metal improves the capabilities of GPGPU programming by using compute shaders. Metal uses a specific shading language based on C++14, implemented using Clang and LLVM.[7]

Metal allows application developers to create Metal resources such as buffers, textures. Resources can be allocated on the CPU, GPU, or both and provides facilities to update and synchronize allocated resources. Metal can also enforce a resource's state during a command encoder's lifetime.[8][9]

On macOS, Metal can provide application developers the discretion to specify which GPU to execute. Application developers can choose between the low-power integrated GPU of the CPU, the discrete GPU (on certain MacBooks and Macs) or an external GPU connected through Thunderbolt. Application developers also have the preference on how GPU commands are executed on which GPUs and provides suggestion on which GPU a certain command is most efficient to execute (commands to render a scene can be executed by the discrete GPU while post-processing and display can be handled by the integrated GPU).[10]

Metal Performance Shaders

Metal Performance Shaders is a highly optimized library of graphics functions that can help application developers achieve great performance at the same time decrease work on maintaining GPU family specific functions.[11] It provides functions including:

  • Image filtering algorithms
  • Neural network processing
  • Advanced math operations
  • Ray tracing

History

Metal has been available since June 2, 2014 on iOS devices powered by Apple A7 or later,[12] and since June 8, 2015 on Macs (2012 models or later) running OS X El Capitan.[13]

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.[14]

At the 2020 WWDC, Apple announced the migration of the Mac to Apple silicon. Macs using Apple silicon will feature Apple GPUs with a feature set combining what was previously available on macOS and iOS, and will be able to take advantage of features tailored to the tile based deferred rendering (TBDR) architecture of Apple GPUs.[15]

At the 2022 WWDC, Apple announced the third version of Metal (Metal 3), which would debut with the release of macOS Ventura, iOS 16 and iPadOS 16. Metal 3 introduces the MetalFX upscaling framework, which renders complex scenes in less time per frame with high-performance upscaling and anti-aliasing, mesh shaders support.[16] Also announced possibility to use C/C++ for Metal API.[17]

At the 2023 WWDC, Apple announced a brand new toolkit called the Game Porting Toolkit to port Windows 10/11-based games. It includes an environment to test binaries, translation layers from HLSL to MSL, and Metal-cpp bindings. Jeremy Sandmel announced a new Game Mode for macOS Sonoma, and Hideo Kojima announced Death Stranding for the macOS App Store.[18]

At the 2024 WWDC, Apple announced Game Porting Toolkit 2, along with the release of new games such as Control: Ultimate Edition, Frostpunk 2, and Assassin's Creed Shadows for macOS.[19]

At the 2025 WWDC, Apple announced Metal 4, a new version of the API featuring a unified command encoder system, support for neural rendering, and new technologies such as MetalFX Frame Interpolation and a ray tracing denoiser.[20]

Supported GPUs

The first version of Metal supports the following hardware and software:[21]

The second version of Metal supports the following hardware and software:

The third version of Metal supports the following hardware and software:[22]

The fourth version of Metal supports the following hardware and software:

Adoption

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.[24] macOS games using Metal for rendering are listed below.

Title Developer (macOS version) Game engine MacOS release date (OpenGL/DirectX) Metal-based release date Metal support notes
Ark: Survival Evolved Studio Wildcard Unreal Engine 4 Template:Dts
Assassin's Creed Shadows Ubisoft Quebec Ubisoft Anvil Template:Dts
ARMA 3 Virtual Programming Real Virtuality Template:Dts Metal support in beta since Template:Dts[citation needed]
Baldur's Gate III Larian Studios Divinity Engine 4.0 Template:Dts Metal support in early access since Template:Dts[citation needed]
Ballistic Overkill Aquiris Game Studio Unity Engine 5 Template:Dts
Batman: Arkham City Feral Interactive Unreal Engine 3 Template:Dts Metal support since 21 February 2019 with v1.2[citation needed]
Batman: The Enemy Within Telltale Games Telltale Tool Template:Dts
BattleTech Harebrained Schemes Unity Engine 5 Template:Dts
Bioshock Remastered Feral Interactive Unreal Engine 2.5 Template:Dts
Bioshock 2 Remastered Feral Interactive Unreal Engine 2.5 Template:Dts
Cyberpunk 2077 CD Projekt REDengine 4 Template:Dts Support for Metal 4
Cities: Skylines Paradox Interactive Unity Engine 5 Template:Dts Metal support since 18 May 2017[citation needed]
Civilization VI Aspyr Media LORE Template:Dts Metal support since 5 April 2019[citation needed]
Company of Heroes 2 Feral Interactive Essence Engine 3 Template:Dts Metal support since Template:Dts[citation needed]
Control: Ultimate Edition Remedy Entertainment Northlight Engine Template:Dts
Dead Island 2 Dambuster Studios Unreal Engine 4 Template:Dts
Deus Ex: Mankind Divided Feral Interactive Dawn Engine Template:Dts
DiRT Rally Feral Interactive EGO Engine 2.5 Template:Dts
Divinity: Original Sin II Larian Studios Divinity Engine 2 Template:Dts
Dota 2 Valve Source 2 Template:Dts MoltenVK was announced on Template:Dts.[25] The option to use this became available on Template:Dts.[26]
The Elder Scrolls Online Zenimax Online Studios N/A Template:Dts Template:Dts OpenGL Renderer replaced with Vulkan via MoltenVK wrapper (translates Vulkan API calls to Metal) in patch 4.2.5
Empire: Total War Feral Interactive TW Engine 3 Template:Dts Metal support since 16 December 2019[citation needed]
EVE Online CCP Games N/A Template:Dts Template:Dts Previously available on macOS via DirectX 9.0 from November 2007 until February 2009; native macOS version using Metal released 14 November 2021[citation needed]
Everspace Rockfish Unreal Engine 4 Template:Dts
F1 2016 Feral Interactive EGO Engine 4.0 Template:Dts
F1 2017 Feral Interactive EGO Engine 4.0 Template:Dts
Fortnite Epic Games Unreal Engine 4 Template:Dts
Frostpunk 11 Bit Studios Liquid Engine Template:Dts
Frostpunk 2 11 Bit Studios Unreal Engine 5 Template:Dts
Gravel Virtual Programming Unreal Engine 4 Template:Dts
Guardians of the Galaxy: The Telltale Series Telltale Games Telltale Tool Template:Dts
Headlander Double Fine Productions Buddha Engine Template:Dts
Heroes of the Storm Blizzard Entertainment SC2 Engine Template:Dts Metal support in beta since Template:Dts (temporarily removed on 29 November 2017[27] until ?)[citation needed]
Hitman Feral Interactive Glacier 2 Template:Dts
Hollow Knight Team Cherry Unity Engine[28] 11 April 2017
Hollow Knight: Silksong Team Cherry Unity Engine[28] 4 September 2025[29]
Life Is Strange: Before the Storm Feral Interactive Unity Engine Template:Dts
Life Is Strange 2 Feral Interactive Unreal Engine 4 Template:Dts
Mafia III Aspyr Media Illusion Engine Template:Dts
Medieval II: Total War Feral Interactive TW Engine 2 Template:Dts Metal support since 25 October 2018[citation needed]
Micro Machines World Series Virtual Programming Unity Engine 5 Template:Dts
Minecraft: Story Mode - Season Two Telltale Games Telltale Tool Template:Dts
MXGP3 Virtual Programming Unreal Engine 4 Template:Dts
Napoleon: Total War Feral Interactive TW Engine 3 Template:Dts Metal support since 25 October 2019 with v1.2[citation needed]
Obduction Cyan Worlds Unreal Engine 4 Template:Dts
Observer Bloober Team Unreal Engine 4 Template:Dts
Quake II id Software Quake II engine Template:Dts A port using MoltenVK was released as vkQuake2.[30]
Refunct Dominique Grieshofer Unreal Engine 4 Template:Dts
Resident Evil 2 Capcom RE Engine Template:Dts
Resident Evil 3 Capcom RE Engine Template:Dts
Resident Evil 4 Capcom RE Engine Template:Dts
Resident Evil Village Capcom RE Engine Template:Dts First macOS game with MetalFX support
Rise of the Tomb Raider Feral Interactive Foundation Engine Template:Dts
Shadow of the Tomb Raider Feral Interactive Foundation Engine Template:Dts
Sid Meier's Railroads! Feral Interactive Gamebryo Template:Dts Metal support since Template:Dts[citation needed]
The Sims 3 Maxis Redwood Shores The Sims 3 Engine Template:Dts Template:Dts
The Sims 4 Maxis SmartSim Template:Dts Metal support added Template:Dts[citation needed]
Sky: Children of the Light Thatgamecompany N/A Template:Dts Native Metal support added since pre-global live in November 2017
Starcraft Blizzard Entertainment Modified Warcraft II engine Template:Dts Metal support since Template:Dts with v1.23.5[citation needed]
StarCraft II Blizzard Entertainment SC2 Engine Template:Dts Metal support in beta since Template:Dts[citation needed]
Tomb Raider Feral Interactive Foundation Engine Template:Dts Metal support with v1.2 in July 2019[citation needed]
Total War: Rome Remastered Feral Interactive TW Engine 2 Template:Dts
Total War: Shogun 2 Feral Interactive TW Engine 3 Template:Dts Metal support since 4 October 2019[citation needed]
Total War: Shogun 2: Fall of the Samurai Feral Interactive TW Engine 3 Template:Dts Metal support since 4 October 2019[citation needed]
Total War: Three Kingdoms Feral Interactive TW Engine 3 Template:Dts
Total War: Warhammer Feral Interactive TW Engine 3 Template:Dts
Total War: Warhammer II Feral Interactive TW Engine 3 Template:Dts
Total War Saga: Thrones of Britannia Feral Interactive TW Engine 3 Template:Dts
Total War Saga: Troy Feral Interactive TW Engine 3 Template:Dts
Transport Fever 2 Urban Games N/A 23 February 2021[31] Metal support using MoltenVK[32] and OpenGL[31]
Universe Sandbox Giant Army Unity Engine 5 Template:TBA Metal support in beta since June 2017[citation needed]
Unreal Tournament Epic Games Unreal Engine 4 Cancelled Metal support since January 2017[citation needed]
War Thunder Gaijin Entertainment Dagor Engine 4 Template:Dts Metal support added Template:Dts (removed in ? 2018 and reintroduced Template:Dts)[citation needed]
Warhammer 40,000: Dawn of War III Feral Interactive Essence Engine 4 Template:Dts
The Witness Thekla, Inc Thekla Engine Template:Dts
World of Warcraft Blizzard Entertainment WoW Engine Template:Dts Metal support since August 2016[citation needed]
X-Plane 11 Laminar Research N/A Template:Dts Metal support in beta since Template:Dts[33]

See also

References

Page Template:Reflist/styles.css has no content.

  1. ^ Page Module:Citation/CS1/styles.css has no content.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 11, 2014. Retrieved September 9, 2014.
  2. ^ Page Module:Citation/CS1/styles.css has no content."Lina's AGX notes".
  3. ^ Page Module:Citation/CS1/styles.css has no content."gist.github.com".
  4. ^ Page Module:Citation/CS1/styles.css has no content."Getting started with Metal-CPP - Metal".
  5. ^ Page Module:Citation/CS1/styles.css has no content.Apple Inc. "Metal Shading Language Specification" (PDF). Archived (PDF) from the original on October 29, 2016. Retrieved September 3, 2018.
  6. ^ Page Module:Citation/CS1/styles.css has no content."Setting Up a Command Structure". Apple Inc.
  7. ^ Page Module:Citation/CS1/styles.css has no content."Metal Shading Language Guide". September 8, 2014. Archived from the original on March 15, 2016. Retrieved September 10, 2014.
  8. ^ Page Module:Citation/CS1/styles.css has no content.Apple Inc. "Setting Resource Storage Mode".
  9. ^ Page Module:Citation/CS1/styles.css has no content."Synchronizing a Managed Resource". Apple Inc.
  10. ^ Page Module:Citation/CS1/styles.css has no content."GPU Selection in macOS". Apple Inc. Archived from the original on November 22, 2019. Retrieved May 3, 2020.
  11. ^ Page Module:Citation/CS1/styles.css has no content."Metal Performance Shaders".
  12. ^ Page Module:Citation/CS1/styles.css has no content.Machkovech, Sam (June 2, 2014). "Apple gets heavy with gaming, announces Metal development platform". Ars Technica. Condé Nast.
  13. ^ Page Module:Citation/CS1/styles.css has no content.Smith, Colin; Meza, Starlayne (June 8, 2015). "Apple Announces OS X El Capitan with Refined Experience & Improved Performance". Newsroom. San Francisco: Apple. Archived from the original on June 8, 2015. Retrieved September 10, 2017.
  14. ^ Page Module:Citation/CS1/styles.css has no content."Metal 2". Apple Developer. Apple. November 20, 2017. Archived from the original on November 20, 2017 – via Wayback Machine.
  15. ^ Page Module:Citation/CS1/styles.css has no content."Bring your Metal app to Apple Silicon Macs". developer.apple.com. Archived from the original on January 3, 2021. Retrieved July 13, 2020.
  16. ^ Page Module:Citation/CS1/styles.css has no content."Discover Metal 3". developer.apple.com. Archived from the original on June 13, 2022. Retrieved June 24, 2022.
  17. ^ Page Module:Citation/CS1/styles.css has no content."Program Metal in C++ with metal-cpp". developer.apple.com. Retrieved September 10, 2022.
  18. ^ Page Module:Citation/CS1/styles.css has no content."WWDC 2023 - Game Porting Toolkit and Metal updates". YouTube. June 5, 2023. Retrieved July 25, 2025.
  19. ^ Page Module:Citation/CS1/styles.css has no content."WWDC 2024 - Game Porting Toolkit 2 and more". YouTube. June 10, 2024. Retrieved July 25, 2025.
  20. ^ Page Module:Citation/CS1/styles.css has no content."WWDC 2025 - Metal 4 Announcement". YouTube. June 9, 2025. Retrieved July 25, 2025.
  21. ^ Page Module:Citation/CS1/styles.css has no content.Chiappetta, Marco (December 11, 2018). "Apple Turns Its Back On Customers And NVIDIA With macOS Mojave". Forbes.
  22. ^ Page Module:Citation/CS1/styles.css has no content."Metal feature set tables" (PDF). Apple. Archived (PDF) from the original on October 14, 2022. Retrieved October 15, 2024.
  23. ^ Page Module:Citation/CS1/styles.css has no content."Metal feature set tables (2022)" (PDF). Apple. Archived from the original (PDF) on October 14, 2022. Retrieved June 12, 2025.
  24. ^ Page Module:Citation/CS1/styles.css has no content.Apple Inc. "WWDC 2017 Platforms State of the Union". Archived from the original on June 6, 2019. Retrieved October 6, 2017.
  25. ^ Page Module:Citation/CS1/styles.css has no content."Vulkan Applications Enabled on Apple Platforms". Khronos Group Press Release. Archived from the original on February 28, 2018. Retrieved February 24, 2021.
  26. ^ Page Module:Citation/CS1/styles.css has no content.Larabel, Michael (June 1, 2018). "Initial Vulkan Performance On macOS With Dota 2 Is Looking Very Good". Phoronix. Archived from the original on February 7, 2022. Retrieved June 5, 2018.
  27. ^ Page Module:Citation/CS1/styles.css has no content."HEROES OF THE STORM BALANCE PATCH NOTES — NOVEMBER 29, 2017". news.blizzard.com. November 29, 2017.
  28. ^ a b Page Module:Citation/CS1/styles.css has no content."Hollow Knight - An Adventure Game | Made with Unity". Unity. Retrieved May 11, 2026.
  29. ^ Page Module:Citation/CS1/styles.css has no content."Hollow Knight: Silksong on Steam". store.steampowered.com. Retrieved May 11, 2026.
  30. ^ Script error: No such module "cite tweet".
  31. ^ a b Page Module:Citation/CS1/styles.css has no content."Transport Fever 2 - Transport Fever 2 receives Mac and Vulkan support - Steam News". store.steampowered.com. February 23, 2021. Archived from the original on February 25, 2021. Retrieved February 12, 2026.
  32. ^ Page Module:Citation/CS1/styles.css has no content."Depot 1066783 (Transport Fever 2 Mac)". SteamDB. Retrieved February 12, 2026.
  33. ^ Page Module:Citation/CS1/styles.css has no content."X-Plane 11.50 Public Beta 1: Vulkan and Metal Are Here". X-Plane Developer. April 2, 2020. Archived from the original on April 3, 2020. Retrieved April 2, 2020.

Template:OS X Lua error in package.lua at line 80: module 'Module:Navbox/configuration' not found.