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. 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".

Características 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.

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.

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.

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).

Metal Performance Shaders 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. 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, y desde el 8 de junio de 2015 en Mac (modelos de 2012 o posterior) con OS X El Capitan.

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.

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.

GPUs compatibles 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.

Adopción 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. juegos de macOS que usan Metal para renderizar se enumeran a continuación. TítuloDesarrollador (versión de macOS)MotorFecha de lanzamiento en MacOS (OpenGL)Fecha de lanzamiento (basado en Metal)NotasEVE OnlineCCP GamesN/ACivilization VIAspyr MediaLORESoporte de Metal desde el 5 de abril de 2019Batman: Arkham CityFeral InteractiveUnreal Engine 3Soporte de Metal desde el 21 de febrero de 2019 con la versión 1.2Dota 2ValveSource 2MoltenVK fue anunciado el . La opción para usarlo estuvo disponible el .Quake IIid SoftwareQuake II engineUn port que usa MoltenVK fue lanzado como vkQuake2.Tomb RaiderFeral InteractiveFoundation EngineSoporte de Metal con la versión 1.2 en julio de 2019Rise of the Tomb RaiderFeral InteractiveFoundation EngineShadow of the Tomb RaiderFeral InteractiveFoundation Engine2019F1 2016Feral InteractiveEGO Engine 4.0Life Is Strange 2Feral InteractiveUnreal Engine 42019Life Is Strange: Before the StormFeral InteractiveUnity EngineDivinity: Original Sin IIElverilsDivinity Engine 2Baldur's Gate IIIElverilsDivinity Engine 4.0Soporte de Metal en acceso anticipado desde el Company of Heroes 2Feral InteractiveEssence Engine 3Soporte de Metal desde el HitmanFeral InteractiveGlacier 2Sid Meier's Railroads!Feral InteractiveGamebryoSoporte de Metal desde el Warhammer 40,000: Dawn of War IIIFeral InteractiveEssence Engine 4Total War: Rome RemasteredFeral InteractiveTW Engine 2Total War: Three KingdomsFeral InteractiveTW Engine 3Total War: WarhammerFeral InteractiveTW Engine 3Total War: Warhammer IIFeral InteractiveTW Engine 3Total War Saga: Thrones of BritanniaFeral InteractiveTW Engine 3Total War Saga: TroyFeral InteractiveTW Engine 3Medieval II: Total WarFeral InteractiveTW Engine 2Soporte de Metal desde el 25 de octubre de 2018Empire: Total WarFeral InteractiveTW Engine 3Soporte de Metal desde el 16 de diciembre de 2019Napoleon: Total WarFeral InteractiveTW Engine 3Soporte de Metal desde el 25 de octubre de 2019 con la versión 1.2Total War: Shogun 2Feral InteractiveTW Engine 3Soporte de Metal desde el 4 de octubre de 2019Total War: Shogun 2: Fall of the SamuraiFeral InteractiveTW Engine 3Soporte de Metal desde el 4 de octubre de 2019Bioshock RemasteredFeral InteractiveUnreal Engine 2.5Bioshock 2 RemasteredFeral InteractiveUnreal Engine 2.5F1 2017Feral InteractiveEGO Engine 4.0Deus Ex: Mankind DividedFeral InteractiveDawn EngineDiRT RallyFeral InteractiveEGO Engine 2.5Ballistic OverkillAquiris Game StudioUnity Engine 5BattleTechHarebrained SchemesUnity Engine 5Mafia IIIAspyr MediaIllusion EngineWorld of WarcraftBlizzard EntertainmentWoW EngineSoporte de Metal desde agosto de 2016StarcraftBlizzard EntertainmentModified Warcraft II engineSoporte de Metal desde el , con la versión 1.23.5StarCraft IIBlizzard EntertainmentSC2 EngineSoporte de Metal en beta desde el Heroes of the StormBlizzard EntertainmentSC2 EngineSoporte de Metal en beta desde el (removido temporalmente el )FortniteEpic GamesUnreal Engine 4ObductionCyan WorldsUnreal Engine 4EverspaceRockfishUnreal Engine 4Ark: Survival EvolvedStudio WildcardUnreal Engine 4ObserverBloober TeamUnreal Engine 4Unreal TournamentEpic GamesUnreal Engine 4Soporte de Metal desde enero de 2017RefunctDominique GrieshoferUnreal Engine 4Cities: SkylinesParadox InteractiveUnity Engine 5Soporte de Metal desde el Universe SandboxGiant ArmyUnity Engine 5Sporte de Metal en beta desde junio de 2017War ThunderGaijin EntertainmentDagor Engine 4Soporte de Metal añadido el (removido en 2018 y reintroducido el )The WitnessThekla, IncThekla EngineMicro Machines World SeriesVirtual ProgrammingUnity Engine 5Guardians of the Galaxy: The Telltale SeriesTelltale GamesTelltale ToolBatman: The Enemy WithinTelltale GamesTelltale ToolMinecraft: Story Mode - Season TwoTelltale GamesTelltale ToolARMA 3Virtual ProgrammingReal VirtualitySoporte de metal en beta desde MXGP3Virtual ProgrammingUnreal Engine 4GravelVirtual ProgrammingUnreal Engine 4X-Plane 11Laminar ResearchN/ASoporte de metal en beta desde el HeadlanderDouble Fine ProductionsBuddha EngineThe Sims 4MaxisSmartSimSoporte de Metal añadido el The Elder Scrolls OnlineZenimax Online StudiosN/AEl 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.5Sky: Children of the LightThatgamecompanyN/ASe añadió soporte nativo de Metal desde el directo pre-global en noviembre de 2017

Véase también

Direct3D Vulkan DirectX 12

Referencias

Enlaces externos

Metal para desarrolladores Guía de programación de metal (preliminar) Demostración de la WWDC14 ; versión extendida 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)

Categoría:IOS (Apple) Categoría:Bibliotecas gráficas Categoría:API de desarrollo 3D Categoría:Introducciones relacionadas a la ciencia de la computación de 2014 Categoría:Wikipedia:Páginas con traducciones sin revisar