Metal es una API de sombreado de cómputo 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 .
Desarrollador (es) | Apple Inc. |
---|---|
Versión inicial | Junio de 2014 |
Lanzamiento estable | 3 / junio 2019 |
Escrito en | Lenguaje de sombreado: C ++ 14 , Runtime / API: Objective-C |
Sistema operativo | iOS , iPadOS , macOS , tvOS |
Tipo | Gráficos 3D y API de computación |
Licencia | propiedad |
Sitio web | desarrollador |
Metal es una API orientada a objetos que se puede invocar utilizando los lenguajes de programación Swift u Objective-C . La ejecución completa de la GPU se controla a través del lenguaje Metal Shading. 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
Metal tiene como objetivo proporcionar acceso de bajo costo 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 codificando 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 la GPU sepa de antemano 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álculo . Metal usa un lenguaje de sombreado específico basado en C ++ 14 , implementado usando Clang y LLVM . [4]
Metal ofrece a los desarrolladores de aplicaciones la flexibilidad de crear recursos de Metal (búferes, texturas). Los recursos se pueden asignar en la CPU, GPU o ambos y proporciona facilidades para actualizar y sincronizar los recursos asignados. Metal también puede imponer el estado de un recurso durante la vida 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 MacBooks y Mac) o una GPU externa conectada a través de Thunderbolt. Los desarrolladores de aplicaciones también tienen la preferencia sobre cómo se ejecutan los comandos de GPU en qué GPU y brindan sugerencias sobre qué GPU es más eficiente ejecutar un comando determinado (los comandos para representar una escena pueden ser ejecutados por la GPU discreta mientras que el posprocesamiento y la visualización se pueden realizar manejado por la GPU integrada). [7]
Sombreadores de rendimiento de metal
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
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 posteriores) 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 , compatibilidad con la realidad virtual en macOS y las especificidades de la GPU Apple A11 , en particular. [11]
En la WWDC de 2020 , Apple anunció la migración de Mac al silicio de Apple . Las Mac que utilizan silicona de Apple 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 de renderizado diferido basado en mosaicos (TBDR) de las GPU de Apple. [12]
GPU compatibles
En iOS, tvOS y macOS, Metal es compatible con los SoC diseñados por Apple desde Apple A7 o más reciente. En macOS, Metal también es compatible con Intel HD e Iris Graphics de la serie HD 4000 o más reciente, AMD GCN y AMD RDNA GPU. Las GPU NVIDIA son compatibles, pero los controladores Metal para dispositivos más nuevos (Serie 10 y más recientes) no están disponibles desde macOS Mojave. [13]
Adopción
Según Apple, más de 148,000 aplicaciones usan Metal directamente y 1.7 millones lo usan a través de marcos de alto nivel , a junio de 2017. [14] Los juegos de macOS que usan Metal para renderizar se enumeran a continuación.
Título | Desarrollador (versión macOS) | Motor de juegos | Fecha de lanzamiento de MacOS (OpenGL) | Fecha de lanzamiento basada en metal | Notas de apoyo de metal |
---|---|---|---|---|---|
Civilización VI | Aspyr Media | CIENCIA | 24 de octubre de 2016 | Soporte de metal desde el 5 de abril de 2019 [ cita requerida ] | |
Batman: Arkham City | Interactivo salvaje | Unreal Engine 3 | 18 de octubre de 2013 | Soporte de metal desde el 21 de febrero de 2019 con v1.2 [ cita requerida ] | |
dota 2 | Válvula | Fuente 2 | 18 de julio de 2013 | MoltenVK se anunció el 26 de febrero de 2018 . [15] La opción para utilizar esto estuvo disponible el 31 de mayo de 2018 . [dieciséis] | |
Quake II | software de identificación | Motor Quake II | 9 de febrero de 2019 | Se lanzó un puerto que usa MoltenVK como vkQuake2. [17] | |
Tomb Raider | Interactivo salvaje | Motor de base | 17 de enero de 2014 | Soporte de Metal con v1.2 en julio de 2019 [ cita requerida ] | |
Rise of the Tomb Raider | Interactivo salvaje | Motor de base | 12 de abril de 2018 | ||
Shadow of the Tomb Raider | Interactivo salvaje | Motor de base | 2019 | ||
F1 2016 | Interactivo salvaje | Motor EGO 4.0 | 6 de abril de 2017 | ||
La vida es extraña 2 | Interactivo salvaje | Unreal Engine 4 | 2019 | ||
La vida es extraña: antes de la tormenta | Interactivo salvaje | Motor de unidad | 13 de septiembre de 2018 | ||
Divinidad: pecado original II | Elverils | Divinity Engine 2 | 31 de enero de 2019 | ||
Puerta de Baldur III | Elverils | Divinity Engine 4.0 | TBA | Soporte de metal en acceso temprano desde el 6 de octubre de 2020 [ cita requerida ] | |
Compañía de héroes 2 | Interactivo salvaje | Motor de esencia 3 | 21 de enero de 2015 | Soporte de metal desde el 19 de octubre de 2018 [ cita requerida ] | |
Sicario | Interactivo salvaje | Glaciar 2 | 20 de junio de 2017 | ||
¡Ferrocarriles de Sid Meier! | Interactivo salvaje | Gamebryo | 1 de noviembre de 2012 | Soporte de metal desde el 18 de diciembre de 2018 [ cita requerida ] | |
Warhammer 40,000: Dawn of War III | Interactivo salvaje | Motor de esencia 4 | 9 de junio de 2017 | ||
Total War: Rome Remastered | Interactivo salvaje | TW Motor 2 | 29 de abril de 2021 | ||
Guerra total: tres reinos | Interactivo salvaje | TW Motor 3 | 23 de mayo de 2019 | ||
Total War: Warhammer | Interactivo salvaje | TW Motor 3 | 19 de abril de 2017 | ||
Total War: Warhammer II | Interactivo salvaje | TW Motor 3 | 20 de noviembre de 2018 | ||
Total War Saga: Thrones of Britannia | Interactivo salvaje | TW Motor 3 | 24 de mayo de 2018 | ||
Total War Saga: Troy | Interactivo salvaje | TW Motor 3 | 13 de agosto de 2020 | ||
Medieval II: Total War | Interactivo salvaje | TW Motor 2 | 17 de diciembre de 2015 | Soporte de metal desde el 25 de octubre de 2018 [ cita requerida ] | |
Imperio: guerra total | Interactivo salvaje | TW Motor 3 | 4 de marzo de 2009 | Soporte de metal desde el 16 de diciembre de 2019 [ cita requerida ] | |
Napoleón: guerra total | Interactivo salvaje | TW Motor 3 | 2 de julio de 2013 | Soporte de metal desde el 25 de octubre de 2019 con v1.2 [ cita requerida ] | |
Total War: Shogun 2 | Interactivo salvaje | TW Motor 3 | 31 de julio de 2014 | Soporte de metal desde el 4 de octubre de 2019 [ cita requerida ] | |
Total War: Shogun 2: La caída del samurái | Interactivo salvaje | TW Motor 3 | 18 de diciembre de 2014 | Soporte de metal desde el 4 de octubre de 2019 [ cita requerida ] | |
Bioshock Remastered | Interactivo salvaje | Unreal Engine 2.5 | 22 de agosto de 2017 | ||
Bioshock 2 Remastered | Interactivo salvaje | Unreal Engine 2.5 | 22 de octubre de 2020 | ||
F1 2017 | Interactivo salvaje | Motor EGO 4.0 | 25 de agosto de 2017 | ||
Deus Ex: humanidad dividida | Interactivo salvaje | Motor del amanecer | 12 de diciembre de 2017 | ||
Rally DiRT | Interactivo salvaje | Motor EGO 2.5 | 16 de noviembre de 2017 | ||
Exceso balístico | Aquiris Game Studio | Motor de unidad 5 | 28 de marzo de 2017 | ||
BattleTech | Esquemas descabellados | Motor de unidad 5 | 24 de abril de 2018 | ||
Mafia III | Aspyr Media | Motor de ilusión | 11 de mayo de 2017 | ||
Mundo de Warcraft | Blizzard Entertainment | Motor de WoW | 23 de noviembre de 2004 | Soporte de metal desde agosto de 2016 [ cita requerida ] | |
Barco de estrellas | Blizzard Entertainment | Motor de Warcraft II modificado | 20 de noviembre de 2001 | Soporte de metal desde el 2 de julio de 2020 con v1.23.5 [ cita requerida ] | |
StarCraft II | Blizzard Entertainment | Motor SC2 | 27 de julio de 2010 | Soporte de metal en beta desde el 24 de enero de 2017 [ cita requerida ] | |
Héroes de la Tormenta | Blizzard Entertainment | Motor SC2 | 2 de junio de 2015 | Soporte de metal en beta desde el 24 de enero de 2017 (eliminado temporalmente el 29 de noviembre de 2017 [18] hasta?) [ Cita requerida ] | |
Fortnite | Juegos épicos | Unreal Engine 4 | 25 de julio de 2017 | ||
Obducción | Mundos cian | Unreal Engine 4 | 29 de marzo de 2017 | ||
Everspace | Pez de roca | Unreal Engine 4 | 26 de mayo de 2017 | ||
Ark: Survival Evolved | Estudio comodín | Unreal Engine 4 | 29 de agosto de 2017 | ||
Observador | Equipo Bloober | Unreal Engine 4 | 24 de octubre de 2017 | ||
Torneo irreal | Juegos épicos | Unreal Engine 4 | Cancelado | Soporte de metal desde enero de 2017 [ cita requerida ] | |
Refutar | Dominique Grieshofer | Unreal Engine 4 | 5 de septiembre de 2016 | ||
Ciudades: Horizontes | Paradoja Interactiva | Motor de unidad 5 | 10 de marzo de 2015 | Soporte de metal desde el 18 de mayo de 2017 [ cita requerida ] | |
Sandbox del universo | Ejército Gigante | Motor de unidad 5 | TBA | Soporte de metal en beta desde junio de 2017 [ cita requerida ] | |
Trueno de guerra | Entretenimiento Gaijin | Motor Dagor 4 | 1 de noviembre de 2012 | Soporte de metal agregado el 24 de mayo de 2017 (eliminado en 2018 y reintroducido el 27 de agosto de 2020 ) [ cita requerida ] | |
El testigo | Thekla, Inc | Motor Thekla | 8 de marzo de 2017 | ||
Micro Machines World Series | Programación virtual | Motor de unidad 5 | 30 de junio de 2017 | ||
Guardianes de la Galaxia: La serie reveladora | Juegos de Telltale | Herramienta indicadora | 18 de abril de 2017 | ||
Batman: el enemigo interior | Juegos de Telltale | Herramienta indicadora | 8 de agosto de 2017 | ||
Minecraft: Story Mode - Temporada Dos | Juegos de Telltale | Herramienta indicadora | 11 de julio de 2017 | ||
ARMA 3 | Programación virtual | Virtualidad real | TBA | Soporte de metal en beta desde el 17 de septiembre de 2017 [ cita requerida ] | |
MXGP3 | Programación virtual | Unreal Engine 4 | 23 de noviembre de 2018 | ||
Grava | Programación virtual | Unreal Engine 4 | 20 de enero de 2019 | ||
X-Plane 11 | Investigación laminar | Motor personalizado | 30 de mayo de 2017 | Soporte de metales en beta desde el 2 de abril de 2020 [19] | |
Headlander | Producciones Double Fine | Motor de Buda | 18 de noviembre de 2016 | ||
Los Sims 4 | Maxis | SmartSim | 17 de febrero de 2015 | Soporte de metal agregado el 12 de noviembre de 2019 [ cita requerida ] |
Ver también
- Direct3D : DirectX 12 presenta API de bajo nivel
- Mantle : API de bajo nivel de AMD
- Vulkan : sucesor de baja sobrecarga de OpenGL
- MoltenVK : biblioteca de compatibilidad de software para ejecutar el software Vulkan sobre la API de Metal
- WebGPU
Referencias
- ^ McWhertor, Michael (9 de septiembre de 2014). "Este es el juego que Apple utilizó para lucirse el iPhone 6" . Polígono . Vox Media . Archivado desde el original el 10 de septiembre de 2014 . Consultado el 9 de septiembre de 2014 .
- ^ Apple Inc. "Especificación del lenguaje de sombreado metálico" (PDF) .
- ^ "Configuración de una estructura de comando" . Apple Inc.
- ^ "Guía de idiomas de sombreado de metales" . 8 de septiembre de 2014 . Consultado el 10 de septiembre de 2014 .
- ^ Apple Inc. "Configuración del modo de almacenamiento de recursos" .
- ^ "Sincronización de un recurso administrado" . Apple Inc.
- ^ "Selección de GPU en macOS" . Apple Inc.
- ^ "Sombreadores de rendimiento de metal" .
- ^ Machkovech, Same (2 de junio de 2014). "Apple se pone pesado con los juegos, anuncia la plataforma de desarrollo Metal" . Ars Technica . Condé Nast .
- ^ Smith, Colin; Meza, Starlayne (8 de junio de 2015). "Apple anuncia OS X El Capitan con experiencia refinada y rendimiento mejorado" . Sala de redacción . San Francisco : Apple .
- ^ "Copia archivada de la página de inicio de Metal, noviembre de 2017" . Desarrollador de Apple . Manzana . 20 de noviembre de 2017. Archivado desde el original el 20 de noviembre de 2017 - a través de Wayback Machine .CS1 maint: bot: estado de URL original desconocido ( enlace )
- ^ "Lleve su aplicación Metal a Apple Silicon Macs" . developer.apple.com . Consultado el 13 de julio de 2020 .
- ^ Chiappetta, Marco (11 de diciembre de 2018). "Apple da la espalda a los clientes y NVIDIA con macOS Mojave" .
- ^ Apple Inc. "WWDC 2017 Platforms State of the Union" .
- ^ "Aplicaciones Vulkan habilitadas en plataformas Apple" . Comunicado de prensa del Grupo Khronos . Consultado el 24 de febrero de 2021 .
- ^ Larabel, Michael (1 de junio de 2018). "El rendimiento inicial de Vulkan en macOS con Dota 2 se ve muy bien" . Phoronix . Consultado el 5 de junio de 2018 .
- ^ Kondrak, Krzysztof [@k_kondrak] (9 de febrero de 2019). "vkQuake2 obtiene soporte para MacOS" (Tweet) . Consultado el 9 de febrero de 2019 a través de Twitter .
- ^ "NOTAS DEL PARCHE DE BALANCE DE HEROES OF THE STORM - 29 DE NOVIEMBRE DE 2017" . news.blizzard.com . 29 de noviembre de 2017.
- ^ "X-Plane 11.50 Public Beta 1: Vulkan y Metal están aquí" . Desarrollador X-Plane . 2 de abril de 2020 . Consultado el 2 de abril de 2020 .
enlaces externos
- Metal para desarrolladores
- Guía de programación de metales (preliminar)
- Demostración de WWDC14 ; versión extendida
- Instale macOS 10.14 Mojave en Mac Pro (mediados de 2010) y Mac Pro (mediados de 2012) : artículo de Apple que explica qué GPU son compatibles con las API Metal de Apple en el sistema operativo Mac OS 10.14 (Mojave)