Metal (API) - Metal (API)

Kov
Metal 2 Logo.png
Mapa Vainglory Halcyon Fold. Tif
Apple použil mobilní multiplayerovou online bitevní arénovou hru Vainglory k předvedení grafických schopností Metal na oznamovací akci iPhonu 6 v září 2014
Vývojáři Apple Inc.
První vydání Červen 2014 ; před 7 lety ( 2014-06 )
Stabilní uvolnění
3 / červen 2019 ; Před 2 roky ( 2019-06 )
Napsáno Stínovací jazyk: C ++ 14 , Runtime / API: Objective-C
Operační systém iOS , iPadOS , macOS , tvOS
Typ 3D grafika a výpočetní API
Licence proprietární
webová stránka vývojář .apple .com / metal /

Metal je nízkoúrovňové hardwarově akcelerované 3D grafické a výpočetní shaderové rozhraní API s nízkou režií vytvořené společností Apple . Debutoval v iOS 8 . Metal kombinuje funkce podobné OpenGL a OpenCL v jednom API. Je určen ke zlepšení výkonu tím, že nabízí nízkoúrovňový přístup k hardwaru GPU pro aplikace pro iOS , iPadOS , macOS a tvOS . Lze jej porovnat s nízkoúrovňovými API na jiných platformách, jako je Vulkan a DirectX 12 .

Metal je objektově orientované API, které lze vyvolat pomocí programovacích jazyků Swift nebo Objective-C . Plné provedení GPU je řízeno jazykem Metal Shading Language. Podle propagačních materiálů společnosti Apple: „MSL [Metal Shading Language] je jediný jednotný jazyk, který umožňuje těsnější integraci mezi grafickými a výpočetními programy. Protože MSL je založen na C ++, najdete jej známý a snadno použitelný.“

Funkce

Metal si klade za cíl poskytnout GPU přístup s nízkou režií. Příkazy jsou předem kódovány a poté odeslány do GPU k asynchronnímu provedení. Aplikace řídí, kdy čekat na dokončení spuštění, což vývojářům aplikací umožňuje zvýšit propustnost kódováním dalších příkazů, zatímco jsou příkazy prováděny na GPU, nebo šetřit energii výslovným čekáním na dokončení GPU. Kromě toho je kódování příkazů nezávislé na CPU, takže aplikace mohou kódovat příkazy do každého vlákna CPU samostatně. Nakonec jsou stavy vykreslení předem předem vypočítány, což umožňuje ovladači GPU předem vědět, jak nakonfigurovat a optimalizovat potrubí vykreslení před spuštěním příkazu.

Metal vylepšuje možnosti programování GPGPU pomocí výpočetních shaderů . Metal používá specifický stínovací jazyk založený na C ++ 14 implementovaný pomocí Clang a LLVM .

Metal nabízí vývojářům aplikací flexibilitu, kde vytvářet prostředky Metal (vyrovnávací paměti, textury). Prostředky lze přidělit na CPU, GPU nebo na obou a poskytuje prostředky k aktualizaci a synchronizaci přidělených prostředků. Metal může také vynucovat stav prostředku během životnosti kodéru příkazů.

V systému macOS může Metal poskytnout vývojářům aplikací uvážení při určování, které GPU provést. Vývojáři aplikací si mohou vybrat mezi integrovaným GPU CPU s nízkou spotřebou, diskrétním GPU (u některých MacBooků a Maců) nebo externím GPU připojeným přes Thunderbolt. Vývojáři aplikací také upřednostňují, jak se příkazy GPU provádějí na kterých GPU, a poskytuje návrh, na kterém GPU je nejúčinnější provést určitý příkaz (příkazy k vykreslení scény lze provést pomocí samostatného GPU, zatímco post-processing a display lze integrovaný GPU).

Metal Performance Shaders

Metal Performance Shaders je vysoce optimalizovaná knihovna grafických funkcí, která může vývojářům aplikací pomoci dosáhnout skvělého výkonu a současně snížit práci na zachování funkcí specifických pro rodinu GPU. Poskytuje funkce včetně:

  • Algoritmy filtrování obrazu
  • Zpracování neuronové sítě
  • Pokročilé matematické operace
  • Sledování paprsku

Dějiny

Metal je k dispozici od 2. června 2014 na zařízeních se systémem iOS poháněných Apple A7 nebo novějším a od 8. června 2015 na počítačích Mac (modely 2012 nebo novější) s OS X El Capitan .

5. června 2017 na WWDC společnost Apple oznámila druhou verzi Metal, kterou bude podporovat MacOS High Sierra , iOS 11 a tvOS 11 . Metal 2 není samostatné API od Metal a je podporován stejným hardwarem. Metal 2 umožňuje efektivnější profilování a ladění v Xcode , zrychlené strojové učení , nižší vytížení CPU , podporu virtuální reality v macOS a zejména specifika GPU Apple A11 .

Na WWDC v roce 2020 společnost Apple oznámila migraci Macu na Apple silikon . Macs pomocí Apple křemík se představí Apple GPU s sadu funkcí kombinující to, co bylo dříve k dispozici pro Mac OS a iOS, a budou moci využívat vlastností šité na míru založené odložené vykreslení dlaždic (TBDR) architektury Apple GPU.

Podporované GPU

V iOS, tvOS a macOS podporuje Metal SoC navržené společností Apple od Apple A7 nebo novějšího. Na macOS podporuje Metal také Intel HD a Iris Graphics z řady HD 4000 nebo novější, AMD GCN a AMD RDNA GPU. GPU NVIDIA jsou podporovány, ale kovové ovladače pro novější zařízení (řady 10 a novější) nejsou od macOS Mojave k dispozici.

Přijetí

Podle společnosti Apple více než 148 000 aplikací používá Metal přímo a od června 2017 jej používá 1,7 milionu prostřednictvím rámců na vysoké úrovni . Hry pro MacOS využívající Metal pro vykreslování jsou uvedeny níže.

Titul Vývojář (verze pro macOS) Herní engine Datum vydání pro MacOS (OpenGL) Kovové datum vydání Poznámky k kovové podpoře
Civilizace VI Aspyr Media VÍCE 24. října 2016 Kovová podpora od 5. dubna 2019
Batman: Arkham City Feral Interactive Unreal Engine 3 18. října 2013 Kovová podpora od 21. února 2019 s v1.2
Dota 2 Ventil Zdroj 2 18. července 2013 MoltenVK bylo oznámeno 26. února 2018 . Možnost používat toto byla zpřístupněna 31. května 2018 .
Quake II id Software Motor Quake II 9. února 2019 Port využívající MoltenVK byl vydán jako vkQuake2.
Tomb Raider Feral Interactive Foundation Engine 17. ledna 2014 Kovová podpora s v1.2 v červenci 2019
Rise of the Tomb Raider Feral Interactive Foundation Engine 12. dubna 2018
Shadow of the Tomb Raider Feral Interactive Foundation Engine 2019
F1 2016 Feral Interactive EGO Engine 4.0 6. dubna 2017
Life Is Strange 2 Feral Interactive Unreal Engine 4 2019
Life Is Strange: Before the Storm Feral Interactive Unity Engine 13. září 2018
Divinity: Original Sin II Elverils Divinity Engine 2 31. ledna 2019
Baldurova brána III Elverils Divinity Engine 4.0 TBA Kovová podpora v předčasném přístupu od 6. října 2020
Společnost hrdinů 2 Feral Interactive Essence Engine 3 21. ledna 2015 Kovová podpora od 19. října 2018
Hitman Feral Interactive Ledovec 2 20. června 2017
Sid Meier's Railroads! Feral Interactive Gamebryo 1. listopadu 2012 Kovová podpora od 18. prosince 2018
Warhammer 40 000: Dawn of War III Feral Interactive Essence Engine 4 9. června 2017
Total War: Rome Remastered Feral Interactive TW Engine 2 29.dubna 2021
Total War: Three Kingdoms Feral Interactive TW Engine 3 23. května 2019
Total War: Warhammer Feral Interactive TW Engine 3 19. dubna 2017
Total War: Warhammer II Feral Interactive TW Engine 3 20. listopadu 2018
Total War Saga: Thrones of Britannia Feral Interactive TW Engine 3 24. května 2018
Total War Saga: Troy Feral Interactive TW Engine 3 13. srpna 2020
Medieval II: Total War Feral Interactive TW Engine 2 17. prosince 2015 Kovová podpora od 25. října 2018
Empire: Total War Feral Interactive TW Engine 3 4. března 2009 Kovová podpora od 16. prosince 2019
Napoleon: Total War Feral Interactive TW Engine 3 2. července 2013 Kovová podpora od 25. října 2019 s v1.2
Total War: Shogun 2 Feral Interactive TW Engine 3 31. července 2014 Kovová podpora od 4. října 2019
Total War: Shogun 2: Fall of the Samurai Feral Interactive TW Engine 3 18. prosince 2014 Kovová podpora od 4. října 2019
Bioshock Remastered Feral Interactive Unreal Engine 2.5 22. srpna 2017
Bioshock 2 Remastered Feral Interactive Unreal Engine 2.5 22. října 2020
F1 2017 Feral Interactive EGO Engine 4.0 25. srpna 2017
Deus Ex: Rozdělení lidstva Feral Interactive Dawn Engine 12. prosince 2017
DiRT Rally Feral Interactive EGO Engine 2.5 16. listopadu 2017
Ballistic Overkill Studio hry Aquiris Unity Engine 5 28. března 2017
BattleTech Harebrained Schémata Unity Engine 5 24. dubna 2018
Mafie III Aspyr Media Illusion Engine 11. května 2017
Svět války Blizzard Entertainment WoW Engine 23. listopadu 2004 Kovová podpora od srpna 2016
Starcraft Blizzard Entertainment Upravený motor Warcraft II 20. listopadu 2001 Kovová podpora od 2. července 2020 s v1.23.5
StarCraft II Blizzard Entertainment Motor SC2 27. července 2010 Kovová podpora v beta verzi od 24. ledna 2017
Heroes of the Storm Blizzard Entertainment Motor SC2 2. června 2015 Kovová podpora v beta verzi od 24. ledna 2017 (dočasně odstraněna 29. listopadu 2017 do?)
Fortnite Epické hry Unreal Engine 4 25. července 2017
Únos Azurové světy Unreal Engine 4 29. března 2017
Everspace Rockfish Unreal Engine 4 26. května 2017
Ark: Přežití se vyvinulo Studio Wildcard Unreal Engine 4 29. srpna 2017
Pozorovatel Bloober Team Unreal Engine 4 24. října 2017
Neskutečný turnaj Epické hry Unreal Engine 4 Zrušeno Kovová podpora od ledna 2017
Refunct Dominique Grieshofer Unreal Engine 4 5. září 2016
Města: Skylines Paradox Interactive Unity Engine 5 10. března 2015 Kovová podpora od 18. května 2017
Pískoviště vesmíru Obří armáda Unity Engine 5 TBA Kovová podpora v beta verzi od června 2017
Válečná bouře Gaijin Entertainment Dagor Engine 4 1. listopadu 2012 Přidána kovová podpora 24. května 2017 (odstraněna v? 2018 a znovu zavedena 27. srpna 2020 )
Svědek Thekla, Inc. Thekla Engine 8. března 2017
Světová série Micro Machines Virtuální programování Unity Engine 5 30. června 2017
Guardians of the Galaxy: The Telltale Series Telltale Games Telltale Tool 18. dubna 2017
Batman: Nepřítel uvnitř Telltale Games Telltale Tool 8. srpna 2017
Minecraft: Story Mode - sezóna dva Telltale Games Telltale Tool 11. července 2017
ARMA 3 Virtuální programování Skutečná virtuálnost TBA Kovová podpora v beta verzi od 17. září 2017
MXGP3 Virtuální programování Unreal Engine 4 23. listopadu 2018
Štěrk Virtuální programování Unreal Engine 4 20. ledna 2019
X-Plane 11 Laminární výzkum Vlastní motor 30. května 2017 Kovová podpora v beta verzi od 2. dubna 2020
Ostroh Double Fine Productions Buddha Engine 18. listopadu 2016
The Sims 4 Maxis SmartSim 17. února 2015 Přidána kovová podpora 12. listopadu 2019
The Elder Scrolls Online Zenimax Online Studios Zvyk 4. dubna 2014 22. října 2018 OpenGL Renderer nahrazen Vulkanem přes MoltenVK wrapper (překládá volání Vulkan API na Metal) v patche 4.2.5


Viz také

  • Direct3D - DirectX 12 zavádí nízkoúrovňové API
  • Plášť - nízkoúrovňové API od AMD
  • Vulkan - nástupce OpenGL s nízkou režií
  • MoltenVK - knihovna kompatibility softwaru pro spuštění softwaru Vulkan nad rozhraním Metal API
  • WebGPU

Reference

externí odkazy