Zatiaľ čo Metal je technológia rýchleho vykresľovania grafiky od Apple pre hry, MetalFX pridáva vylepšenia, aby zažiaril na Apple Silicon. Tu je návod, ako MetalFX funguje.
V roku 2014 spoločnosť Apple predstavila svoju novú technológiu vykresľovania grafiky a hier s názvom Metal.
Metal je vykresľovacie API, ktoré poskytuje rýchly výkon optimalizovaný pre hardvér Apple. S príchodom grafických procesorov Apple Silicon GPU získava Metal ešte väčší výkon.
Jedným problémom pri vykresľovaní grafiky v počítačových hrách je nakreslenie veľkého počtu polygónov rýchle modelovanie pomocou povrchových shaderov a efektov s vysokým rozlíšením. Keď sa obnovovacie frekvencie a zložitosť hernej scény zvýšili, tento problém vytvoril prekážky v procese vykresľovania grafiky.
Metal API je Apple C++ API, ktoré má svoj vlastný tieňovací jazyk nazývaný, ako by ste očakávali, Metal Shading Language (MSL). Metal API bolo porovnané s DirectX 12 v systéme Windows alebo s knižnicou vykresľovania grafiky tretej strany Vulkan.
Existujú aj verzie Swift a Objective-C rozhrania Metal API.
Keďže však Metal pochádza od spoločnosti Apple a je určený pre hardvér Apple, poskytuje najlepší výkon vykresľovania grafiky spomedzi všetkých dostupných technológií vykresľovania na týchto zariadeniach.
Ukážku vykresľovania kovu môžete vidieť v akcii zakaždým, keď spustíte hru Apple Arcade na zariadení so systémom iOS alebo tvOS – krátka animácia odrazu loga Apple Arcade, ktorá sa spustí pred vykreslením každej hry Apple Arcade pomocou kovu.
Mnoho hier používa hardvérovú akceleráciu GPU a vopred vypočítané shadery na zrýchlenie vykresľovania grafiky. V Metale sú grafické príkazy vopred zakódované a následne odoslané GPU na vykreslenie.
Predpočítané stavy vykresľovania vopred informujú GPU o tom, ako nakonfigurovať postup vykresľovania na maximálny výkon.
Renderovacie shadery alebo vopred vypočítané programy, ktoré riadia svetlo, tmu a farby, sa používajú počas vykresľovania 3D scény, aby poskytli realizmus a špeciálne efekty. MSL popisuje, ako Metal shadery fungujú.
Shadery boli prvýkrát predstavené v komerčnom softvéri v roku 1988 so softvérom Pixar RenderMan, ktorý má na počítačoch Mac dlhú históriu siahajúcu desaťročia späť.
Vo väčšine moderných vykresľovacích kanálov GPU sa 3D dáta aj programy tieňovacieho jazyka odosielajú do GPU na spracovanie, ktoré potom riadi viackrokový proces alebo reťazec, pomocou ktorého sa vytvára každý snímok v scéne.
Kroky vykresľovania zhruba zahŕňajú transformácie geometrie, rozdelenie modelov na trojuholníky a štvorce, použitie fragmentových shaderov, testovanie hĺbky a kombinovanie a vylúčenie okludovaných povrchov a objektov. Posledný krok zahŕňa skombinovanie všetkého do konečnej vyrovnávacej pamäte snímok na prezeranie.
Toto všetko sa na modernom hardvéri GPU deje desiatky krát za sekundu.
Metal obsahuje aj performance shadery – programy, ktoré urýchľujú vykresľovanie a zároveň znižujú zaťaženie GPU. Výkonové shadery zahŕňajú filtrovanie obrazu, neurónovú sieť, pokročilú matematiku a sledovanie lúčov.
Sledovanie lúčov výrazne zlepšuje povrchy objektov 3D modelu, textúry a odrazy od svetelných zdrojov.
V roku 2020 Apple oznámil, že preniesol Metal na Apple Silicon CPU a GPU, aby poskytoval oveľa rýchlejší výkon. Na WWDC 2022 Apple predstavil novú funkciu v metale s názvom MetalFX.
MetalFX umožňuje rýchlejšie a presnejšie vykresľovanie scény prepočítaním a vyhladením niektorých snímok na prepočítanie a vyhladenie okrajov vykreslených objektov.
Tajnou zbraňou MetalFX je technológia nazývaná upscaling.
Cieľom je vykresliť objekt alebo scéna v nižšom rozlíšení, vďaka čomu je celkové vykresľovanie vyrovnávacej pamäte snímky rýchlejšie. Potom pred zobrazením pridá ďalší krok zväčšením scény.
Vďaka vykonaniu väčšiny vykresľovania scény v menších rozmeroch je možné scény vykresliť rýchlejšie, s väčšími detailmi a zložitosťou. Vo väčšine prípadov je zvyčajne rýchlejšie vykresliť objekty scény v menšom meradle a potom zlepšiť celkové rozlíšenie konečného záberu, než vykresliť celú scénu vo väčšom konečnom rozmere.
Pomocou upscalingu môže MetalFX poskytnúť rýchlejšie vykresľovanie scény a viac detailov a ostrosti objektu.
Príklad prevzorkovania MetalFX. Rám napravo sa zdá ostrejší.
MetalFX používa dva odlišné typy upscalingu: priestorové upscaling a dočasné anti-aliasing upscaling.
Pri priestorovom upscalingu sú vytvorené dve triedy Metal-MTLFXSpatialScalerDescriptor a MTLFXSpatialScaler. Objekt deskriptora popisuje detaily objektu priestorového škálovača a objekt MTLFXSpatialScaler vykonáva skutočné kódovanie (prostredníctvom svojej metódy kódovania).
Keď sa zavolá kódovanie, objekt MTLFXSpatialScaler vytvorí a odošle príkazy na vykreslenie do objektu MTLCommandBuffer na vykreslenie. Tento proces sa opakuje pre každú snímku v scéne.
Priestorové prevzorkovanie MetalFX môže poskytnúť zhruba až dvojnásobné detaily scény bez straty výkonu.
Vytváranie objektov MTLFXSpatialScaler je výpočtovo nákladné a malo by sa vykonávať iba vtedy, keď sa spustí aplikácia alebo obrazovka zmení rozlíšenie.
Pri dočasnom zvyšovaní veľkosti vyhladzovania sa údaje z predchádzajúceho rámca používajú ako vstup na zväčšenie aktuálneho rámca.
Supersampling a dočasné vzorkovanie sú techniky, ktoré využívajú údaje jednotlivých pixelov zo snímok na dosiahnutie zvýšenia veľkosti. Vzorkujú sa údaje z každého pixelu a pixelov z viacerých snímok.
Dočasné vyhladzovanie je o niečo náročnejšie na výpočet a vyžaduje ďalšie údaje o farbách, hĺbke a pohybe, aby fungovalo.
Tu je ďalší príklad vylepšenia anti-aliasingu z prezentácie Apple na WWDC:
1080p, vľavo-a 4K upscalované vpravo s anti-aliasing upscaling.
Väčšina spracovania MetalFX upscaling by sa mala uskutočniť po vykreslení, ale pred akýmkoľvek konečným následným spracovaním sa robí na rámoch.
Jedným z možností využitia vyhladzovania MetalFX na zvýšenie rozlíšenia je zvýšenie rozlíšenia snímok 1080p, aby sa priblížili k rozlíšeniu 4K.
Rovnako ako v prípade priestorového upscalingu, MetalFX poskytuje dve triedy pre anti-aliasing upscaler: MTLFXTemporalScalerDescriptor a MTLFXTemporalScaler.
Kompletná dokumentácia MetalFX je k dispozícii na webových stránkach vývojárov spoločnosti Apple. Apple na WWDC’22 usporiadal aj video z relácie MetalFX s názvom „Zvýšte výkon s MetalFX Upscaling“, ktoré podrobne popisuje použitie MetalFX, vrátane vzorového kódu.
Niekoľko herných titulov AAA vrátane No Man’s Sky už používa MetalFX na zariadeniach Apple.
MetalFX sľubuje moderné grafické výpočtové techniky na zvýšenie rozlíšenia scény aj výkonu hry na modernom hardvéri GPU. Je pravdepodobné, že nová technológia Metal spôsobí revolúciu v hraní na zariadeniach Apple.