Metal (API)

De Wikipedia, la enciclopedia libre
Metal

Apple usó el videojuego MOBA Vainglory para demostrar las capacidades gráficas de Metal en el evento de anuncio del iPhone 6 en septiembre de 2014
Información general
Tipo de programa API de cómputo y gráficos 3D
Desarrollador Apple,Inc.
Lanzamiento inicial junio de 2014
Licencia Propietario
Versiones
Última versión estable 3 ( junio de 2019)
Enlaces

Metal es una API de sombreado y gráficos 3D acelerada por hardware de bajo nivel y baja sobrecarga creada por Apple. Debutó en iOS 8. Metal combina funciones similares a OpenGL y OpenCL en una API. Su objetivo es mejorar el rendimiento al ofrecer acceso de bajo nivel al hardware de la GPU para aplicaciones en iOS, iPadOS, macOS y tvOS. Se puede comparar con API de bajo nivel en otras plataformas como Vulkan y DirectX 12.

Metal es una API orientada a objetos que se puede invocar utilizando los lenguajes de programación Swift, Objective-C o C++17[1]​. La ejecución completa de la GPU se controla mediante Metal Shading Language. Según los materiales promocionales de Apple: "MSL [Metal Shading Language] es un lenguaje único y unificado que permite una integración más estrecha entre los gráficos y los programas informáticos. Dado que MSL está basado en C++, le resultará familiar y fácil de usar".[2]

Características[editar]

Metal tiene como objetivo proporcionar un acceso de baja sobrecarga a la GPU. Los comandos se codifican de antemano y luego se envían a la GPU para su ejecución asincrónica. La aplicación controla cuándo esperar a que se complete la ejecución, lo que permite a los desarrolladores de aplicaciones aumentar el rendimiento mediante la codificación de otros comandos mientras los comandos se ejecutan en la GPU o ahorrar energía al esperar explícitamente a que se complete la ejecución de la GPU. Además, la codificación de comandos es independiente de la CPU, por lo que las aplicaciones pueden codificar comandos para cada subproceso de la CPU de forma independiente. Por último, los estados de procesamiento se calculan previamente de antemano, lo que permite que el controlador de GPU sepa con anterioridad cómo configurar y optimizar la canalización de procesamiento antes de la ejecución del comando.[3]

Metal mejora las capacidades de programación GPGPU mediante el uso de sombreadores de cómputo. Metal utiliza un lenguaje de sombreado específico basado en C++14, implementado mediante Clang y LLVM.[4]

Metal ofrece a los desarrolladores de aplicaciones la flexibilidad para crear recursos de Metal (búferes, texturas). Los recursos se pueden asignar en la CPU, la GPU o en ambos y proporciona funciones para actualizar y sincronizar los recursos asignados. Metal también puede imponer el estado de un recurso durante la vida útil de un codificador de comando.[5][6]

En macOS, Metal puede proporcionar a los desarrolladores de aplicaciones la discreción de especificar qué GPU ejecutar. Los desarrolladores de aplicaciones pueden elegir entre la GPU integrada de bajo consumo de la CPU, la GPU discreta (en ciertos MacBook y Mac) o una GPU externa conectada a través de Thunderbolt. Los desarrolladores de aplicaciones también tienen preferencia sobre cómo los comandos de GPU se ejecutan en qué GPU y brindan sugerencias sobre qué GPU es más eficiente para ejecutar un determinado comando (los comandos para renderizar una escena pueden ser ejecutados por la GPU discreta mientras que el procesamiento posterior y la visualización pueden ser manejado por la GPU integrada).[7]

Metal Performance Shaders[editar]

Metal Performance Shaders es una biblioteca altamente optimizada de funciones gráficas que puede ayudar a los desarrolladores de aplicaciones a lograr un gran rendimiento al mismo tiempo que reduce el trabajo de mantenimiento de las funciones específicas de la familia de GPU.[8]​ Proporciona funciones que incluyen:

  • Algoritmos de filtrado de imágenes
  • Procesamiento de redes neuronales
  • Operaciones matemáticas avanzadas
  • Trazado de rayos

Historia[editar]

Metal ha estado disponible desde el 2 de junio de 2014 en dispositivos iOS con tecnología Apple A7 o posterior,[9]​ y desde el 8 de junio de 2015 en Mac (modelos de 2012 o posterior) con OS X El Capitan.[10]

El 5 de junio de 2017 en la WWDC, Apple anunció la segunda versión de Metal, que será compatible con macOS High Sierra, iOS 11 y tvOS 11. Metal 2 no es una API separada de Metal y es compatible con el mismo hardware. Metal 2 permite una creación de perfiles y una depuración más eficientes en Xcode, aprendizaje automático acelerado, menor carga de trabajo de la CPU, soporte para realidad virtual en macOS y especificidades de la GPU Apple A11, en particular.[11]

En la WWDC de 2020, Apple anunció la migración de la Mac a Apple Silicon. Las Mac que usan Apple Silicon contarán con GPU de Apple con un conjunto de funciones que combina lo que estaba disponible anteriormente en macOS e iOS, y podrán aprovechar las funciones adaptadas a la arquitectura del renderizado diferido basado en mosaicos (tile based deferred rendering, TBDR) de las GPU de Apple.[12]

GPUs compatibles[editar]

En iOS, tvOS y macOS, Metal es compatible con los SoC diseñados por Apple desde Apple A7 o posteriores. En macOS, Metal también es compatible con Intel HD e Iris Graphics de la serie HD 4000 o más reciente, GPUs AMD GCN y AMD RDNA. Las GPU NVIDIA son compatibles, pero los controladores Metal para dispositivos más nuevos (serie 10 y más nuevos) no están disponibles desde macOS Mojave.[13]

Adopción[editar]

Según Apple, más de 148 000 aplicaciones usan Metal directamente y 1,7 millones lo usan a través de frameworks de alto nivel, a partir de junio de 2017.[14]​ juegos de macOS que usan Metal para renderizar se enumeran a continuación.

Título Desarrollador (versión de macOS) Motor Fecha de lanzamiento en MacOS (OpenGL) Fecha de lanzamiento (basado en Metal) Notas
EVE Online CCP Games N/A 02021-10-14 14 de octubre de 2021
Civilization VI Aspyr Media LORE 02016-10-24 24 de octubre de 2016 Soporte de Metal desde el 5 de abril de 2019[cita requerida]
Batman: Arkham City Feral Interactive Unreal Engine 3 02013-10-18 18 de octubre de 2013 Soporte de Metal desde el 21 de febrero de 2019 con la versión 1.2[cita requerida]
Dota 2 Valve Source 2 02013-07-18 18 de julio de 2013 MoltenVK fue anunciado el 02018-02-26 26 de febrero de 2018.[15]​ La opción para usarlo estuvo disponible el 02018-05-31 31 de mayo de 2018.[16]
Quake II id Software Quake II engine 02019-02-09 9 de febrero de 2019 Un port que usa MoltenVK fue lanzado como vkQuake2.[17]
Tomb Raider Feral Interactive Foundation Engine 02014-01-17 17 de enero de 2014 Soporte de Metal con la versión 1.2 en julio de 2019[cita requerida]
Rise of the Tomb Raider Feral Interactive Foundation Engine 02018-04-12 12 de abril de 2018
Shadow of the Tomb Raider Feral Interactive Foundation Engine 2019
F1 2016 Feral Interactive EGO Engine 4.0 02017-04-06 6 de abril de 2017
Life Is Strange 2 Feral Interactive Unreal Engine 4 2019
Life Is Strange: Before the Storm Feral Interactive Unity Engine 02018-07-13 13 de julio de 2018
Divinity: Original Sin II Elverils Divinity Engine 2 02019-01-31 31 de enero de 2019
Baldur's Gate III Elverils Divinity Engine 4.0 Soporte de Metal en acceso anticipado desde el 02020-10-06 06 de octubre de 2020[cita requerida]
Company of Heroes 2 Feral Interactive Essence Engine 3 02015-01-21 21 de enero de 2015 Soporte de Metal desde el 02018-10-19 19 de octubre de 2018[cita requerida]
Hitman Feral Interactive Glacier 2 02017-06-20 20 de junio de 2017
Sid Meier's Railroads! Feral Interactive Gamebryo 02012-11-01 1 de noviembre de 2012 Soporte de Metal desde el 02018-12-18 18 de diciembre de 2018[cita requerida]
Warhammer 40,000: Dawn of War III Feral Interactive Essence Engine 4 02017-06-09 9 de junio de 2017
Total War: Rome Remastered Feral Interactive TW Engine 2 02021-04-29 29 de abril de 2021
Total War: Three Kingdoms Feral Interactive TW Engine 3 02019-05-23 23 de mayo de 2019
Total War: Warhammer Feral Interactive TW Engine 3 02017-04-19 19 de abril de 2017
Total War: Warhammer II Feral Interactive TW Engine 3 02018-11-20 20 de noviembre de 2018
Total War Saga: Thrones of Britannia Feral Interactive TW Engine 3 02016-05-24 24 de mayo de 2016
Total War Saga: Troy Feral Interactive TW Engine 3 02020-08-13 13 de agosto de 2020
Medieval II: Total War Feral Interactive TW Engine 2 02015-12-17 17 de diciembre de 2015 Soporte de Metal desde el 25 de octubre de 2018[cita requerida]
Empire: Total War Feral Interactive TW Engine 3 02009-03-04 4 de marzo de 2009 Soporte de Metal desde el 16 de diciembre de 2019[cita requerida]
Napoleon: Total War Feral Interactive TW Engine 3 02013-07-02 2 de julio de 2013 Soporte de Metal desde el 25 de octubre de 2019 con la versión 1.2[cita requerida]
Total War: Shogun 2 Feral Interactive TW Engine 3 02014-07-31 31 de julio de 2014 Soporte de Metal desde el 4 de octubre de 2019[cita requerida]
Total War: Shogun 2: Fall of the Samurai Feral Interactive TW Engine 3 02014-12-18 18 de diciembre de 2014 Soporte de Metal desde el 4 de octubre de 2019[cita requerida]
Bioshock Remastered Feral Interactive Unreal Engine 2.5 02017-08-22 22 de agosto de 2017
Bioshock 2 Remastered Feral Interactive Unreal Engine 2.5 02020-10-22 22 de octubre de 2020
F1 2017 Feral Interactive EGO Engine 4.0 02017-08-25 25 de agosto de 2017
Deus Ex: Mankind Divided Feral Interactive Dawn Engine 02017-12-12 12 de diciembre de 2017
DiRT Rally Feral Interactive EGO Engine 2.5 02017-11-16 16 de noviembre de 2017
Ballistic Overkill Aquiris Game Studio Unity Engine 5 02017-03-28 28 de marzo de 2017
BattleTech Harebrained Schemes Unity Engine 5 02017-12-12 12 de diciembre de 2017
Mafia III Aspyr Media Illusion Engine 02017-05-11 11 de mayo de 2017
World of Warcraft Blizzard Entertainment WoW Engine 02004-11-23 23 de noviembre de 2004 Soporte de Metal desde agosto de 2016[cita requerida]
Starcraft Blizzard Entertainment Modified Warcraft II engine 02001-11-20 20 de noviembre de 2001 Soporte de Metal desde el 02020-07-02 02 de julio de 2020, con la versión 1.23.5[cita requerida]
StarCraft II Blizzard Entertainment SC2 Engine 02010-07-27 27 de julio de 2010 Soporte de Metal en beta desde el 02017-01-24 24 de enero de 2017[cita requerida]
Heroes of the Storm Blizzard Entertainment SC2 Engine 02015-06-02 2 de junio de 2015 Soporte de Metal en beta desde el 02017-01-24 24 de enero de 2017 (removido temporalmente el 02017-11-29 29 de noviembre de 2017[18]​)[cita requerida]
Fortnite Epic Games Unreal Engine 4 02017-07-25 25 de julio de 2017
Obduction Cyan Worlds Unreal Engine 4 02017-03-29 29 de marzo de 2017
Everspace Rockfish Unreal Engine 4 02017-05-26 26 de mayo de 2017
Ark: Survival Evolved Studio Wildcard Unreal Engine 4 02017-08-29 29 de agosto de 2017
Observer Bloober Team Unreal Engine 4 02017-10-24 24 de octubre de 2017
Unreal Tournament Epic Games Unreal Engine 4 Cancelado Soporte de Metal desde enero de 2017[cita requerida]
Refunct Dominique Grieshofer Unreal Engine 4 02016-09-05 5 de septiembre de 2016
Cities: Skylines Paradox Interactive Unity Engine 5 02015-03-10 10 de marzo de 2015 Soporte de Metal desde el 02017-05-18 18 de mayo de 2017[cita requerida]
Universe Sandbox Giant Army Unity Engine 5 Sporte de Metal en beta desde junio de 2017[cita requerida]
War Thunder Gaijin Entertainment Dagor Engine 4 02012-11-01 1 de noviembre de 2012 Soporte de Metal añadido el 02017-05-24 24 de mayo de 2017 (removido en 2018 y reintroducido el 02020-08-27 27 de agosto de 2020)[cita requerida]
The Witness Thekla, Inc Thekla Engine 02017-03-08 8 de marzo de 2017
Micro Machines World Series Virtual Programming Unity Engine 5 02017-06-30 30 de junio de 2017
Guardians of the Galaxy: The Telltale Series Telltale Games Telltale Tool 02017-04-18 18 de abril de 2017
Batman: The Enemy Within Telltale Games Telltale Tool 02017-08-08 08 de agosto de 2017
Minecraft: Story Mode - Season Two Telltale Games Telltale Tool 02017-07-11 11 de julio de 2017
ARMA 3 Virtual Programming Real Virtuality Soporte de metal en beta desde 02017-09-17 17 de septiembre de 2017[cita requerida]
MXGP3 Virtual Programming Unreal Engine 4 02018-11-23 23 de noviembre de 2018
Gravel Virtual Programming Unreal Engine 4 02019-01-20 20 de enero de 2019
X-Plane 11 Laminar Research N/A 02017-05-30 30 de mayo de 2017 Soporte de metal en beta desde el 02020-04-02 2 de abril de 2020[19]
Headlander Double Fine Productions Buddha Engine 02016-11-18 18 de noviembre de 2016
The Sims 4 Maxis SmartSim 02015-02-17 17 de febrero de 2015 Soporte de Metal añadido el 02019-11-12 12 de noviembre de 2019[cita requerida]
The Elder Scrolls Online Zenimax Online Studios N/A 02014-04-04 4 de abril de 2014 02018-10-22 22 de octubre de 2018 El renderizador de OpenGL se reemplazó con Vulkan a través del envoltorio MoltenVK (traduce las llamadas API de Vulkan a Metal) en el parche 4.2.5
Sky: Children of the Light Thatgamecompany N/A 02019-07-18 18 de julio de 2019 Se añadió soporte nativo de Metal desde el directo pre-global en noviembre de 2017

Véase también[editar]

Referencias[editar]

  1. «Getting started with Metal-cpp - Metal». Apple Developer (en inglés). Consultado el 9 de febrero de 2022. 
  2. Apple Inc. «Metal Shading Language Specification». 
  3. «Setting Up a Command Structure». Apple Inc. 
  4. «Metal Shading Language Guide». 8 de septiembre de 2014. Consultado el 10 de septiembre de 2014. 
  5. Apple Inc. «Setting Resource Storage Mode». 
  6. «Synchronizing a Managed Resource». Apple Inc. 
  7. «GPU Selection in macOS». Apple Inc. 
  8. «Metal Performance Shaders». 
  9. Machkovech, Same (2 de junio de 2014). «Apple gets heavy with gaming, announces Metal development platform». Ars Technica. Condé Nast. 
  10. Smith, Colin (8 de junio de 2015). «Apple Announces OS X El Capitan with Refined Experience & Improved Performance». Newsroom. San Francisco: Apple. 
  11. «Archived copy of the Metal homepage, November 2017». Apple Developer. Apple. 20 de noviembre de 2017. Archivado desde el original el 20 de noviembre de 2017. 
  12. «Bring your Metal app to Apple Silicon Macs». developer.apple.com. Consultado el 13 de julio de 2020. 
  13. Chiappetta, Marco (11 de diciembre de 2018). «Apple Turns Its Back On Customers And NVIDIA With macOS Mojave». Forbes. 
  14. Apple Inc. «WWDC 2017 Platforms State of the Union». 
  15. «Vulkan Applications Enabled on Apple Platforms» (en inglés estadounidense). Khronos Group Press Release. Consultado el 24 de febrero de 2021. 
  16. Larabel, Michael (1 de junio de 2018). «Initial Vulkan Performance On macOS With Dota 2 Is Looking Very Good». Phoronix. Consultado el 5 de junio de 2018. 
  17. k_kondrak (9 de febrero de 2019). «vkQuake2 gets MacOS support». X (antes Twitter) (tuit). Consultado el 9 de febrero de 2019. 
  18. «HEROES OF THE STORM BALANCE PATCH NOTES — NOVEMBER 29, 2017». news.blizzard.com (en inglés). 29 de noviembre de 2017. 
  19. «X-Plane 11.50 Public Beta 1: Vulkan and Metal Are Here». X-Plane Developer (en inglés estadounidense). 2 de abril de 2020. Consultado el 2 de abril de 2020. 

Enlaces externos[editar]