Metal (API) - Metal (API)
Desenvolvedor (s) | Apple Inc. |
---|---|
lançamento inicial | Junho de 2014 |
Versão estável | 3 / junho de 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. |
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
- Metal para desenvolvedores
- Guia de programação de metal (preliminar)
- Demonstração WWDC14 ; versão extendida
- Instale o macOS 10.14 Mojave no Mac Pro (meados de 2010) e Mac Pro (meados de 2012) - artigo da Apple explicando quais GPUs são compatíveis com as APIs de metal da Apple no sistema operacional Mac OS 10.14 (Mojave)