Zatímco Metal je technologie rychlého vykreslování grafiky od Apple pro hry, MetalFX přidává vylepšení, aby na Apple Silicon zazářil. Zde je návod, jak MetalFX funguje.
V roce 2014 Apple představil svou novou technologii vykreslování grafiky a her nazvanou Metal.
Metal je vykreslovací rozhraní API, které poskytuje rychlý výkon optimalizovaný pro hardware Apple. S příchodem Apple Silicon GPU získává Metal ještě větší výkon.
Jedním z problémů při vykreslování grafiky počítačových her je, jak nakreslit velké množství mnohoúhelníků rychle modeluje pomocí povrchových shaderů a efektů s vysokým rozlišením. Vzhledem k tomu, že se obnovovací frekvence a složitost herních scén zvýšily, tento problém vytvořil překážky v procesu vykreslování grafiky.
Metal API je Apple C++ API, které má svůj vlastní stínovací jazyk nazvaný, jak byste očekávali, Metal Shading Language (MSL). Metal API bylo srovnáváno s DirectX 12 ve Windows nebo s knihovnou pro vykreslování grafiky třetích stran Vulkan.
Existují také verze Swift a Objective-C rozhraní Metal API.
Vzhledem k tomu, že Metal pochází od společnosti Apple a je určen pro hardware Apple, poskytuje nejlepší výkon vykreslování grafiky ze všech dostupných technologií vykreslování na těchto zařízeních.
Ukázku metalového vykreslování můžete vidět v akci pokaždé, když spustíte hru Apple Arcade na zařízení se systémem iOS nebo tvOS – krátká animace odrazu loga Apple Arcade, která se spustí před vykreslením každé hry Apple Arcade pomocí Metal..
Mnoho her používá k urychlení vykreslování grafiky hardwarovou akceleraci GPU a předpočítané shadery. V Metalu jsou grafické příkazy předem zakódovány a poté odeslány GPU k vykreslení.
Předem vypočítané stavy vykreslování sdělují GPU předem, jak nakonfigurovat vykreslovací kanál pro maximální výkon.
Vykreslovací shadery nebo předem vypočítané programy, které řídí světlo, tmu a barvu, se používají během vykreslování 3D scény k zajištění realismu a speciálních efektů. MSL popisuje, jak Metal shadery fungují.
Shadery byly poprvé představeny v komerčním softwaru v roce 1988 se softwarem Pixar RenderMan, který má na Macu dlouhou historii sahající až do desetiletí.
Ve většině moderních vykreslovacích kanálů GPU jsou 3D data i programy stínovacího jazyka odesílány ke zpracování do grafického procesoru, který pak řídí vícekrokový proces nebo kanál, pomocí kterého je vytvořen každý snímek ve scéně.
Kroky vykreslování zhruba zahrnují transformace geometrie, rozdělení modelů na trojúhelníky a čtveřice, použití fragmentových shaderů, testování hloubky a kombinování a vyloučení uzavřených povrchů a objektů. Poslední krok zahrnuje zkombinování všeho do konečné vyrovnávací paměti snímků pro prohlížení.
To vše se na moderním hardwaru GPU děje desítkykrát za sekundu.
Metal také obsahuje performance shadery – programy, které zrychlují vykreslování a zároveň snižují zátěž GPU. Výkonové shadery zahrnují filtrování obrazu, neuronové sítě, pokročilou matematiku a sledování paprsků.
Sledování paprsků výrazně zlepšuje povrchy objektů 3D modelu, textury a odrazy od světelných zdrojů.
V roce 2020 Apple oznámil, že přenesl Metal na Apple Silicon CPU a GPU, aby poskytoval mnohem rychlejší výkon. Na WWDC 2022 Apple představil novou funkci v Metal s názvem MetalFX.
MetalFX umožňuje rychlejší a přesnější vykreslování scény přepočítáním a vyhlazováním některých snímků pro přepočítání a vyhlazení okrajů vykreslených objektů.
Tajnou zbraní MetalFX je technologie zvaná upscaling.
Cílem je vykreslit objekt nebo scéna v nižším rozlišení, díky čemuž je celkové vykreslování vyrovnávací paměti snímků rychlejší. Poté přidá před zobrazením další krok zvětšením scény.
Tím, že většinu vykreslování scény provádíte v menších rozměrech, lze scény vykreslovat rychleji a s většími detaily a složitostí. Ve většině případů je obvykle rychlejší vykreslit objekty scény v menším měřítku a pak zlepšit celkové rozlišení konečného snímku, než vykreslit celou scénu ve větším konečném rozměru.
Použitím upscalingu může MetalFX poskytnout rychlejší vykreslování scény a více detailů a ostrosti objektu.
Příklad převzorkování MetalFX. Rámeček napravo se zdá ostřejší.
MetalFX používá dva odlišné typy upscalingu: prostorové upscaling a temporal anti-aliasing upscaling.
V prostorovém upscalingu jsou vytvořeny dvě třídy Metal-MTLFXSpatialScalerDescriptor a MTLFXSpatialScaler. Objekt deskriptoru popisuje podrobnosti o objektu prostorového škálovače a objekt MTLFXSpatialScaler provádí skutečné kódování (prostřednictvím své metody kódování).
Když je zavoláno kódování, objekt MTLFXSpatialScaler vytvoří a odešle příkazy vykreslení do objektu MTLCommandBuffer k vykreslení. Tento proces se opakuje pro každý snímek ve scéně.
Prostorové upscaling MetalFX může poskytnout zhruba až dvojnásobné detaily scény bez podstatné ztráty výkonu.
Vytváření objektů MTLFXSpatialScaler je výpočetně nákladné a mělo by být prováděno pouze při spuštění aplikace nebo při změně rozlišení displeje.
Při dočasném zvýšení rozlišení vyhlazování jsou data z předchozího snímku použita jako vstup pro zvýšení rozlišení aktuálního snímku.
Supersampling a temporal sampling jsou techniky, které využívají data jednotlivých pixelů ze snímků k dosažení upscalingu. Vzorkují se data z každého pixelu i pixelů z více snímků.
Dočasné vyhlazování je o něco náročnější na výpočet a vyžaduje další data o barvách, hloubce a pohybu, aby fungovalo.
Zde je další příklad zvýšení rozlišení anti-aliasingu z prezentace Apple na WWDC:
1080p, vlevo-a 4K upscaled vpravo s anti-aliasing upscaling.
Většina zpracování MetalFX upscaling by měla proběhnout po vykreslení, ale před konečným následným zpracováním se provádí na rámech.
Jedno použití MetalFX anti-aliasing upscaling je zvýšit rozlišení snímků 1080p tak, aby se blížily rozlišení 4K.
Stejně jako u prostorového upscalingu, MetalFX poskytuje dvě třídy pro anti-aliasing upscaler: MTLFXTemporalScalerDescriptor a MTLFXTemporalScaler.
Kompletní dokumentace MetalFX je k dispozici na webu pro vývojáře společnosti Apple. Apple také uspořádal na WWDC’22 video z relace MetalFX s názvem „Zvýšení výkonu pomocí MetalFX Upscaling“, které podrobně popisuje použití MetalFX, včetně ukázkového kódu.
Několik herních titulů AAA včetně No Man’s Sky již používá MetalFX na zařízeních Apple.
MetalFX slibuje moderní grafické výpočetní techniky pro zvýšení rozlišení scény i herního výkonu na moderním hardwaru GPU. Je pravděpodobné, že nová technologie Metal způsobí revoluci v hraní na zařízeních Apple.