Metal (API) - Metal (API)

Metal
Metal 2 Logo.png
Vainglory Halcyon Fold map.tif
A Apple usou o Vainglory jogo multiplayer online para celular na arena de batalha para demonstrar as capacidades gráficas do Metal no evento de anúncio do iPhone 6 em setembro de 2014
Desenvolvedor (s) Apple Inc.
lançamento inicial Junho de 2014 ; 7 anos atrás ( 2014-06 )
Versão estável
3 / junho de 2019 ; 2 anos atrás ( 06 2019 )
Escrito em Linguagem de sombreamento: C ++ 14 , Runtime / API: Objective-C
Sistema operacional iOS , iPadOS , macOS , tvOS
Modelo Gráficos 3D e API de computação
Licença proprietário
Local na rede Internet desenvolvedor. maçã .com / metal /

Metal é uma API gráfica e de sombreador de computação 3D acelerada por hardware de baixo nível e baixa sobrecarga criada pela Apple . Ele estreou no iOS 8 . Metal combina funções semelhantes a OpenGL e OpenCL em uma API. O objetivo é melhorar o desempenho, oferecendo acesso de baixo nível ao hardware da GPU para aplicativos no iOS , iPadOS , macOS e tvOS . Ele pode ser comparado a APIs de baixo nível em outras plataformas , como Vulkan e DirectX 12 .

Metal é uma API orientada a objetos que pode ser chamada usando as linguagens de programação Swift ou Objective-C . A execução completa da GPU é controlada por meio da linguagem Metal Shading. De acordo com os materiais promocionais da Apple: "MSL [Metal Shading Language] é uma linguagem única e unificada que permite uma integração mais estreita entre os programas gráficos e de computação. Como a MSL é baseada em C ++, você a achará familiar e fácil de usar."

Características

O objetivo do metal é fornecer acesso de baixa sobrecarga à GPU. Os comandos são codificados de antemão e, em seguida, enviados à GPU para execução assíncrona. O aplicativo controla quando esperar pela conclusão da execução, permitindo, assim, que os desenvolvedores de aplicativos aumentem o rendimento codificando outros comandos enquanto os comandos são executados na GPU ou economize energia ao esperar explicitamente pela conclusão da execução da GPU. Além disso, a codificação de comando é independente da CPU, portanto, os aplicativos podem codificar comandos para cada thread da CPU de forma independente. Por último, os estados de renderização são pré-calculados de antemão, permitindo que o driver da GPU saiba com antecedência como configurar e otimizar o pipeline de renderização antes da execução do comando.

Metal melhora os recursos de programação GPGPU usando sombreadores de computação . Metal usa uma linguagem de shading específica baseada em C ++ 14 , implementada usando Clang e LLVM .

O Metal oferece aos desenvolvedores de aplicativos a flexibilidade de criar recursos de Metal (buffers, texturas). Os recursos podem ser alocados na CPU, GPU ou em ambos e fornece recursos para atualizar e sincronizar os recursos alocados. O metal também pode impor o estado de um recurso durante a vida útil do codificador de comando.

No macOS, o Metal pode fornecer aos desenvolvedores de aplicativos a liberdade de especificar qual GPU executar. Os desenvolvedores de aplicativos podem escolher entre a GPU integrada de baixo consumo da CPU, a GPU discreta (em certos MacBooks e Macs) ou uma GPU externa conectada através do Thunderbolt. Os desenvolvedores de aplicativos também têm preferência sobre como os comandos da GPU são executados em quais GPUs e fornece sugestões sobre qual GPU um determinado comando é mais eficiente para executar (comandos para renderizar uma cena podem ser executados pela GPU discreta enquanto o pós-processamento e a exibição podem ser gerenciado pela GPU integrada).

Shaders de desempenho de metal

Metal Performance Shaders é uma biblioteca altamente otimizada de funções gráficas que pode ajudar os desenvolvedores de aplicativos a obter um ótimo desempenho ao mesmo tempo que diminui o trabalho de manutenção de funções específicas da família de GPU. Ele fornece funções, incluindo:

  • Algoritmos de filtragem de imagem
  • Processamento de rede neural
  • Operações matemáticas avançadas
  • Rastreamento de raio

História

Metal está disponível desde 2 de junho de 2014 em dispositivos iOS com Apple A7 ou posterior, e desde 8 de junho de 2015 em Macs (modelos de 2012 ou posterior) rodando OS X El Capitan .

Em 5 de junho de 2017 na WWDC , a Apple anunciou a segunda versão do Metal, com suporte para macOS High Sierra , iOS 11 e tvOS 11 . Metal 2 não é um API separado do Metal e é suportado pelo mesmo hardware. O Metal 2 permite a criação de perfis e depuração mais eficientes no Xcode , aprendizado de máquina acelerado , menor carga de trabalho da CPU , suporte para realidade virtual no macOS e especificidades da GPU Apple A11 , em particular.

No 2020 WWDC , a Apple anunciou a migração do Mac para o silício da Apple . Os Macs que usam silício da Apple apresentarão GPUs da Apple com um conjunto de recursos combinando o que estava anteriormente disponível no macOS e iOS, e serão capazes de tirar proveito dos recursos feitos sob medida para a arquitetura de renderização diferida baseada em blocos (TBDR) das GPUs da Apple.

GPUs com suporte

No iOS, tvOS e macOS, o Metal suporta SoCs projetados pela Apple do Apple A7 ou mais recente. No macOS, o Metal também oferece suporte a Intel HD e Iris Graphics da série HD 4000 ou mais recente, AMD GCN e GPUs AMD RDNA . As GPUs NVIDIA são suportadas, mas os drivers de metal para dispositivos mais novos (série 10 e mais recentes) não estão disponíveis desde o macOS Mojave.

Adoção

De acordo com a Apple, mais de 148.000 aplicativos usam Metal diretamente e 1,7 milhão o usam por meio de estruturas de alto nível , em junho de 2017. Os jogos macOS usando Metal para renderização estão listados abaixo.

Título Desenvolvedor (versão macOS) Motor do jogo Data de lançamento do MacOS (OpenGL) Data de lançamento à base de metal Notas de suporte de metal
Civilização VI Aspyr Media LORE 24 de outubro de 2016 Suporte de metal desde 5 de abril de 2019
Cidade de Arkham do Batman Feral Interactive Unreal Engine 3 18 de outubro de 2013 Suporte de metal desde 21 de fevereiro de 2019 com v1.2
Dota 2 Válvula Fonte 2 18 de julho de 2013 O MoltenVK foi anunciado em 26 de fevereiro de 2018 . A opção de usá-lo tornou-se disponível em 31 de maio de 2018 .
Quake II id Software Motor Quake II 9 de fevereiro de 2019 Uma porta usando MoltenVK foi lançada como vkQuake2.
Tomb Raider Feral Interactive Foundation Engine 17 de janeiro de 2014 Suporte de metal com v1.2 em julho de 2019
Ascensão do Tomb Raider Feral Interactive Foundation Engine 12 de abril de 2018
Shadow of the Tomb Raider Feral Interactive Foundation Engine 2019
F1 2016 Feral Interactive EGO Engine 4.0 6 de abril de 2017
A vida é estranha 2 Feral Interactive Unreal Engine 4 2019
A vida é estranha: antes da tempestade Feral Interactive Unity Engine 13 de setembro de 2018
Divindade: Pecado Original II Elverils Divinity Engine 2 31 de janeiro de 2019
Baldur's Gate III Elverils Divinity Engine 4.0 TBA Suporte de metal em acesso antecipado desde 6 de outubro de 2020
Companhia de heróis 2 Feral Interactive Essence Engine 3 21 de janeiro de 2015 Suporte de metal desde 19 de outubro de 2018
assassino de aluguel Feral Interactive Geleira 2 20 de junho de 2017
Ferrovias de Sid Meier! Feral Interactive Gamebryo 1 de novembro de 2012 Suporte de metal desde 18 de dezembro de 2018
Warhammer 40.000: Dawn of War III Feral Interactive Essence Engine 4 9 de junho de 2017
Guerra Total: Roma Remasterizada Feral Interactive TW Engine 2 29 de abril de 2021
Guerra Total: Três Reinos Feral Interactive TW Engine 3 23 de maio de 2019
Total War: Warhammer Feral Interactive TW Engine 3 19 de abril de 2017
Total War: Warhammer II Feral Interactive TW Engine 3 20 de novembro de 2018
Total War Saga: Thrones of Britannia Feral Interactive TW Engine 3 24 de maio de 2018
Total War Saga: Troy Feral Interactive TW Engine 3 13 de agosto de 2020
Medieval II: Guerra Total Feral Interactive TW Engine 2 17 de dezembro de 2015 Suporte de metal desde 25 de outubro de 2018
Império: Guerra Total Feral Interactive TW Engine 3 4 de março de 2009 Suporte de metal desde 16 de dezembro de 2019
Napoleão: Guerra Total Feral Interactive TW Engine 3 2 de julho de 2013 Suporte de metal desde 25 de outubro de 2019 com v1.2
Guerra Total: Shogun 2 Feral Interactive TW Engine 3 31 de julho de 2014 Suporte de metal desde 4 de outubro de 2019
Guerra Total: Shogun 2: Queda do Samurai Feral Interactive TW Engine 3 18 de dezembro de 2014 Suporte de metal desde 4 de outubro de 2019
Bioshock Remasterizado Feral Interactive Unreal Engine 2.5 22 de agosto de 2017
Bioshock 2 Remasterizado Feral Interactive Unreal Engine 2.5 22 de outubro de 2020
F1 2017 Feral Interactive EGO Engine 4.0 25 de agosto de 2017
Deus Ex: Mankind Divided Feral Interactive Motor Dawn 12 de dezembro de 2017
DiRT Rally Feral Interactive EGO Engine 2.5 16 de novembro de 2017
Exagero balístico Aquiris Game Studio Unity Engine 5 28 de março de 2017
BattleTech Esquemas Harebrained Unity Engine 5 24 de abril de 2018
Mafia III Aspyr Media Illusion Engine 11 de maio de 2017
World of Warcraft Blizzard Entertainment WoW Engine 23 de novembro de 2004 Suporte de metal desde agosto de 2016
Starcraft Blizzard Entertainment Motor Warcraft II modificado 20 de novembro de 2001 Suporte de metal desde 2 de julho de 2020 com v1.23.5
StarCraft II Blizzard Entertainment Motor SC2 27 de julho de 2010 Suporte de metal em beta desde 24 de janeiro de 2017
Heróis da Tempestade Blizzard Entertainment Motor SC2 2 de junho de 2015 Suporte de metal em beta desde 24 de janeiro de 2017 (removido temporariamente em 29 de novembro de 2017 até?)
Quinze dias Jogos épicos Unreal Engine 4 25 de julho de 2017
Obstrução Cyan Worlds Unreal Engine 4 29 de março de 2017
Everspace Rockfish Unreal Engine 4 26 de maio de 2017
Ark: Survival Evolved Studio Wildcard Unreal Engine 4 29 de agosto de 2017
Observador Equipe Bloober Unreal Engine 4 24 de outubro de 2017
Torneio irreal Jogos épicos Unreal Engine 4 Cancelado Suporte de metal desde janeiro de 2017
Reembolsar Dominique Grieshofer Unreal Engine 4 5 de setembro de 2016
Cidades: Skylines Paradox Interactive Unity Engine 5 10 de março de 2015 Suporte de metal desde 18 de maio de 2017
Universe Sandbox Exército Gigante Unity Engine 5 TBA Suporte de metal em beta desde junho de 2017
War Thunder Gaijin Entertainment Dagor Engine 4 1 de novembro de 2012 Suporte de metal adicionado em 24 de maio de 2017 (removido em? 2018 e reintroduzido em 27 de agosto de 2020 )
A testemunha Thekla, Inc Thekla Engine 8 de março de 2017
Micro Machines World Series Programação Virtual Unity Engine 5 30 de junho de 2017
Guardiões da galáxia: a série reveladora Jogos da Telltale Ferramenta Indicadora 18 de abril de 2017
Batman: o inimigo interno Jogos da Telltale Ferramenta Indicadora 8 de agosto de 2017
Minecraft: Modo História - Segunda Temporada Jogos da Telltale Ferramenta Indicadora 11 de julho de 2017
ARMA 3 Programação Virtual Virtualidade Real TBA Suporte de metal em beta desde 17 de setembro de 2017
MXGP3 Programação Virtual Unreal Engine 4 23 de novembro de 2018
Cascalho Programação Virtual Unreal Engine 4 20 de janeiro de 2019
X-Plane 11 Laminar Research Motor personalizado 30 de maio de 2017 Suporte de metal em beta desde 2 de abril de 2020
Headlander Double Fine Productions Motor buda 18 de novembro de 2016
The Sims 4 Maxis SmartSim 17 de fevereiro de 2015 Suporte de metal adicionado em 12 de novembro de 2019
The Elder Scrolls Online Zenimax Online Studios Personalizado 4 de abril de 2014 22 de outubro de 2018 Renderizador OpenGL substituído por Vulkan via wrapper MoltenVK (traduz chamadas de API Vulkan para Metal) no patch 4.2.5


Veja também

  • Direct3D - DirectX 12 apresenta APIs de baixo nível
  • Mantle - API de baixo nível da AMD
  • Vulkan - sucessor de baixa sobrecarga para OpenGL
  • MoltenVK - biblioteca de compatibilidade de software para executar o software Vulkan no topo da API Metal
  • WebGPU

Referências

links externos