Metal (API)

API de renderizado de gráficos para iOS, macOS y tvOS

Metal
Desarrollador(es)Compañía Apple Inc.
Lanzamiento inicialJunio ​​2014 ; hace 10 años ( 2014-06 )
Versión estable
24/octubre 2022 ; hace 2 años ( 2022-10 )
Escrito enLenguaje de sombreado : C++14 , Tiempo de ejecución/API: Objective-C
Sistema operativoiOS , iPadOS , macOS , tvOS
TipoGráficos 3D y API de cómputo
LicenciaPropiedad
Sitio webdesarrollador.apple.com/metal/

Metal es una API de sombreador de gráficos y computación 3D acelerada por hardware de bajo nivel y bajo consumo de recursos creada por Apple y que debutó en iOS 8. Metal combina funciones similares a OpenGL y OpenCL en una sola 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 las API de bajo nivel de otras plataformas, como Vulkan y DirectX 12 .

Metal es una API orientada a objetos que se puede invocar mediante los lenguajes de programación Swift , Objective-C o C++17 [2] . La ejecución completa en la GPU se controla mediante el 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 programas gráficos y de cómputo. Dado que MSL está basado en C++, te resultará familiar y fácil de usar". [3]

Características

Metal tiene como objetivo proporcionar un acceso a la GPU con bajo consumo de recursos. 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 se ejecutan en la GPU o ahorrar energía esperando explícitamente a que se complete la ejecución en la GPU. Además, la codificación de comandos es independiente de la CPU, por lo que las aplicaciones pueden codificar comandos para cada hilo de la CPU de forma independiente. Por último, los estados de renderizado se calculan previamente de antemano, lo que permite que el controlador de la GPU sepa de antemano cómo configurar y optimizar el flujo de renderizado antes de la ejecución del comando. [4]

Metal mejora las capacidades de programación de 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 . [5]

Metal permite a los desarrolladores de aplicaciones crear recursos de Metal, como buffers y texturas. Los recursos se pueden asignar en la CPU, la GPU o ambas, y proporciona funciones para actualizar y sincronizar los recursos asignados. Metal también puede hacer cumplir el estado de un recurso durante la vida útil de un codificador de comandos. [6] [7]

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 ciertas MacBooks y Macs) 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 la GPU en qué GPU y proporciona 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 posprocesamiento y la visualización pueden ser manejados por la GPU integrada). [8]

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 funciones específicas de la familia GPU. [9] Proporciona funciones que incluyen:

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

Historia

Metal está disponible desde el 2 de junio de 2014 en dispositivos iOS con Apple A7 o posterior, [10] y desde el 8 de junio de 2015 en Mac (modelos 2012 o posteriores) con OS X El Capitan . [11]

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 realidad virtual en macOS y especificidades de la GPU Apple A11 , en particular. [12]

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

En la WWDC de 2022 , Apple anunció la tercera versión de Metal (Metal 3), que debutaría con el lanzamiento de macOS Ventura , iOS 16 y iPadOS 16. Metal 3 presenta el marco de mejora de escala MetalFX, que renderiza escenas complejas en menos tiempo por fotograma con mejora de escala de alto rendimiento y compatibilidad con anti-aliasing y sombreadores de malla. [14] También se anunció la posibilidad de usar C/C++ para la API de Metal. [15]

GPU compatibles

La primera versión de Metal admite el siguiente hardware y software: [16]

La segunda versión de Metal admite el siguiente hardware y software:

La tercera versión de Metal admite el siguiente hardware y software: [17]

Adopción

Según Apple, más de 148.000 aplicaciones utilizan Metal directamente y 1,7 millones lo utilizan a través de marcos de alto nivel , a junio de 2017. [18] Los juegos de macOS que utilizan Metal para renderizar se enumeran a continuación.

TítuloDesarrollador (versión macOS)Motor de juegoFecha de lanzamiento de MacOS (OpenGL/DirectX)Fecha de lanzamiento basada en metalNotas de soporte de metal
EVE en líneaJuegos del PCChN / A6 de noviembre de 200714 de octubre de 2021Anteriormente disponible en macOS a través de DirectX 9.0 desde noviembre de 2007 hasta febrero de 2009; versión nativa de macOS que utiliza Metal lanzada el 14 de noviembre de 2021 [ cita requerida ]
Civilización VIMedios de comunicación AspyrCIENCIA24 de octubre de 2016Soporte de metal desde el 5 de abril de 2019 [ cita requerida ]
Batman: Ciudad ArkhamFeral interactivoMotor irreal 318 de octubre de 2013Soporte de Metal desde el 21 de febrero de 2019 con v1.2 [ cita requerida ]
Dota 2VálvulaFuente 218 de julio de 2013MoltenVK se anunció el 26 de febrero de 2018. [ 19] La opción para usarlo estuvo disponible el 31 de mayo de 2018. [ 20]
Terremoto IISoftware de identificaciónMotor del Quake II9 de febrero de 2019Se lanzó un puerto que utiliza MoltenVK llamado vkQuake2. [21]
Tomb RaiderFeral interactivoMotor de la Fundación17 de enero de 2014Soporte de Metal con v1.2 en julio de 2019 [ cita requerida ]
El ascenso de Tomb RaiderFeral interactivoMotor de la Fundación12 de abril de 2018
La sombra del Tomb RaiderFeral interactivoMotor de la Fundación2019
Fórmula 1 2016Feral interactivoMotor EGO 4.06 de abril de 2017
La vida es extraña 2Feral interactivoMotor irreal 42019
La vida es extraña: antes de la tormentaFeral interactivoMotor Unity13 de septiembre de 2018
Divinidad: Pecado original IIEstudios LarianMotor de divinidad 231 de enero de 2019
La puerta de Baldur IIIEstudios LarianMotor Divinity 4.022 de septiembre de 2023Soporte de metal en acceso anticipado desde el 6 de octubre de 2020 [ cita requerida ]
Compañía de Héroes 2Feral interactivoMotor de esencia 321 de enero de 2015Soporte de metal desde el 19 de octubre de 2018 [ cita requerida ]
SicarioFeral interactivoGlaciar 220 de junio de 2017
¡Los ferrocarriles de Sid Meier!Feral interactivoJuego de bryo1 de noviembre de 2012Soporte de metal desde el 18 de diciembre de 2018 [ cita requerida ]
Warhammer 40,000: El amanecer de la guerra IIIFeral interactivoMotor de esencia 49 de junio de 2017
Total War: Roma remasterizadaFeral interactivoMotor TW 229 de abril de 2021
Guerra total: Tres reinosFeral interactivoMotor TW 323 de mayo de 2019
Guerra total: WarhammerFeral interactivoMotor TW 319 de abril de 2017
Guerra total: Warhammer IIFeral interactivoMotor TW 320 de noviembre de 2018
Saga Total War: Tronos de BritanniaFeral interactivoMotor TW 324 de mayo de 2018
Saga Total War: TroyaFeral interactivoMotor TW 313 de agosto de 2020
Medieval II: Guerra TotalFeral interactivoMotor TW 217 de diciembre de 2015Soporte de metal desde el 25 de octubre de 2018 [ cita requerida ]
Imperio: Guerra TotalFeral interactivoMotor TW 34 de marzo de 2009Soporte de metal desde el 16 de diciembre de 2019 [ cita requerida ]
Napoleón: Guerra totalFeral interactivoMotor TW 32 de julio de 2013Soporte de Metal desde el 25 de octubre de 2019 con v1.2 [ cita requerida ]
Guerra total: Shogun 2Feral interactivoMotor TW 331 de julio de 2014Soporte de metal desde el 4 de octubre de 2019 [ cita requerida ]
Total War: Shogun 2: La caída del samuráiFeral interactivoMotor TW 318 de diciembre de 2014Soporte de metal desde el 4 de octubre de 2019 [ cita requerida ]
Bioshock remasterizadoFeral interactivoMotor Unreal 2.522 de agosto de 2017
Bioshock 2 remasterizadoFeral interactivoMotor Unreal 2.522 de octubre de 2020
Fórmula 1 2017Feral interactivoMotor EGO 4.025 de agosto de 2017
Deus Ex: La humanidad divididaFeral interactivoMotor del amanecer12 de diciembre de 2017
Rally de suciedadFeral interactivoMotor EGO 2.516 de noviembre de 2017
Exceso de balísticaEstudio de juegos AquirisMotor Unity 528 de marzo de 2017
Tecnología de batallaPlanes descabelladosMotor Unity 524 de abril de 2018
Mafia IIIMedios de comunicación AspyrMotor de ilusión11 de mayo de 2017
Mundo de WarcraftEntretenimiento BlizzardMotor WoW23 de noviembre de 2004Soporte de metal desde agosto de 2016 [ cita requerida ]
nave estelarEntretenimiento BlizzardMotor de Warcraft II modificado20 de noviembre de 2001Soporte de Metal desde el 2 de julio de 2020 con v1.23.5 [ cita requerida ]
StarCraft IIEntretenimiento BlizzardMotor SC227 de julio de 2010Soporte de Metal en versión beta desde el 24 de enero de 2017 [ cita requerida ]
Héroes de la tormentaEntretenimiento BlizzardMotor SC22 de junio de 2015Soporte de Metal en versión beta desde el 24 de enero de 2017 (eliminado temporalmente el 29 de noviembre de 2017 [22] hasta ?) [ cita requerida ]
FortniteJuegos épicosMotor irreal 425 de julio de 2017
ObducciónMundos cianMotor irreal 429 de marzo de 2017
Espacio eternoPez rocaMotor irreal 426 de mayo de 2017
Ark: La supervivencia evolucionóEstudio WildcardMotor irreal 429 de agosto de 2017
ObservadorEquipo BlooberMotor irreal 424 de octubre de 2017
Torneo irrealJuegos épicosMotor irreal 4CanceladoSoporte de metal desde enero de 2017 [ cita requerida ]
RefundirDominique GrieshoferMotor irreal 45 de septiembre de 2016
Ciudades: SkylinesParadoja interactivaMotor Unity 510 de marzo de 2015Soporte de metal desde el 18 de mayo de 2017 [ cita requerida ]
Sandbox del universoEjército giganteMotor Unity 5Por confirmarSoporte de Metal en versión beta desde junio de 2017 [ cita requerida ]
Trueno de guerraEntretenimiento GaijinMotor Dagor 41 de noviembre de 2012Se agregó soporte de metal el 24 de mayo de 2017 (se eliminó en ? 2018 y se reintrodujo el 27 de agosto de 2020 ) [ cita requerida ]
El testigoThekla, IncMotor Thekla8 de marzo de 2017
Serie mundial de Micro MachinesProgramación virtualMotor Unity 530 de junio de 2017
Guardianes de la Galaxia: La serie TelltaleJuegos de TelltaleHerramienta reveladora18 de abril de 2017
Batman: El enemigo interiorJuegos de TelltaleHerramienta reveladora8 de agosto de 2017
Minecraft: Modo historia - Temporada 2Juegos de TelltaleHerramienta reveladora11 de julio de 2017
ARMA 3Programación virtualVirtualidad realPor confirmarSoporte de Metal en versión beta desde el 17 de septiembre de 2017 [ cita requerida ]
MXGP3Programación virtualMotor irreal 423 de noviembre de 2018
GravaProgramación virtualMotor irreal 420 de enero de 2019
X-Plane 11Investigación laminarN / A30 de mayo de 2017Soporte de Metal en versión beta desde el 2 de abril de 2020 [23]
CabeceraProducciones Doble FinaMotor de Buda18 de noviembre de 2016
Los Sims 3Maxis Redwood ShoresEl motor de Los Sims 32 de junio de 200928 de octubre de 2020
Los Sims 4MaxisSim inteligente17 de febrero de 2015Soporte de metal añadido el 12 de noviembre de 2019 [ cita requerida ]
Los Pergaminos Antiguos en LíneaEstudios en línea ZenimaxN / A4 de abril de 201422 de octubre de 2018El renderizador OpenGL se reemplazó con Vulkan a través del contenedor MoltenVK (traduce las llamadas de la API de Vulkan a Metal) en el parche 4.2.5
Cielo: Hijos de la LuzEsa compañía de juegosN / A18 de julio de 2019Se agregó soporte para Native Metal desde el lanzamiento mundial previo en noviembre de 2017
Residente malvado puebloCapcomMotor RE28 de octubre de 2022Primer juego para macOS con soporte para MetalFX

Véase también

  • Direct3DDirectX 12 introduce API de bajo nivel
  • Mantle : API de bajo nivel de AMD
  • Vulkan : el sucesor de OpenGL con bajo consumo de recursos
  • MoltenVK : biblioteca de compatibilidad de software para ejecutar el software Vulkan sobre la API de Metal
  • GPU web
  • OpenGL : API de gráficos multiplataforma

Referencias

  1. ^ McWhertor, Michael (9 de septiembre de 2014). «Este es el juego que Apple utilizó para mostrar el iPhone 6». Polygon . Vox Media . Archivado desde el original el 11 de septiembre de 2014 . Consultado el 9 de septiembre de 2014 .
  2. ^ "Introducción a Metal-CPP - Metal".
  3. ^ Apple Inc. "Especificación del lenguaje de sombreado de metal" (PDF) .
  4. ^ "Configuración de una estructura de comandos". Apple Inc.
  5. ^ "Guía del lenguaje de sombreado de metales". 8 de septiembre de 2014. Consultado el 10 de septiembre de 2014 .
  6. ^ Apple Inc. "Configuración del modo de almacenamiento de recursos".
  7. ^ "Sincronización de un recurso administrado". Apple Inc.
  8. ^ "Selección de GPU en macOS". Apple Inc.
  9. ^ "Sombreadores de rendimiento de metal".
  10. ^ Machkovech, Same (2 de junio de 2014). "Apple apuesta fuerte por los videojuegos y anuncia la plataforma de desarrollo Metal". Ars Technica . Condé Nast .
  11. ^ Smith, Colin; Meza, Starlayne (8 de junio de 2015). "Apple anuncia OS X El Capitan con una experiencia refinada y un rendimiento mejorado". Sala de prensa . San Francisco : Apple .
  12. ^ "Copia archivada de la página de inicio de Metal, noviembre de 2017". Apple Developer . Apple . 20 de noviembre de 2017. Archivado desde el original el 20 de noviembre de 2017 – vía Wayback Machine .{{cite web}}: CS1 maint: bot: estado de URL original desconocido ( enlace )
  13. ^ "Lleva tu aplicación Metal a los Mac con Apple Silicon". developer.apple.com . Consultado el 13 de julio de 2020 .
  14. ^ "Descubre Metal 3". developer.apple.com . Consultado el 24 de junio de 2022 .
  15. ^ "Programa Metal en C++ con metal-cpp". developer.apple.com . Consultado el 10 de septiembre de 2022 .
  16. ^ Chiappetta, Marco (11 de diciembre de 2018). "Apple da la espalda a los clientes y a NVIDIA con macOS Mojave". Forbes .
  17. ^ "Tablas de conjuntos de características de Metal" (PDF) . Apple .
  18. ^ Apple Inc. "Estado de la Unión de las plataformas WWDC 2017".
  19. ^ "Aplicaciones Vulkan habilitadas en plataformas Apple". Comunicado de prensa de Khronos Group . Consultado el 24 de febrero de 2021 .
  20. ^ Larabel, Michael (1 de junio de 2018). "El rendimiento inicial de Vulkan en macOS con Dota 2 parece muy bueno". Phoronix . Consultado el 5 de junio de 2018 .
  21. ^ Kondrak, Krzysztof [@k_kondrak] (9 de febrero de 2019). «vkQuake2 obtiene soporte para MacOS» ( Tweet ) . Consultado el 9 de febrero de 2019 – vía Twitter .
  22. ^ "NOTAS DEL PARCHE DE EQUILIBRIO DE HEROES OF THE STORM — 29 DE NOVIEMBRE DE 2017". news.blizzard.com . 29 de noviembre de 2017.
  23. ^ "X-Plane 11.50 Public Beta 1: Vulkan y Metal ya están aquí". X-Plane Developer . 2 de abril de 2020 . Consultado el 2 de abril de 2020 .
  • Metal para desarrolladores
  • Guía de programación de Metal (preliminar)
  • Demostración de la WWDC14; versión ampliada
  • Instalar 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)
Obtenido de "https://es.wikipedia.org/w/index.php?title=Metal_(API)&oldid=1251234248"