Míg a Metal az Apple gyors grafikai megjelenítési technológiája játékokhoz, a MetalFX további fejlesztésekkel teszi ragyogóvá az Apple Silicon-on. Így működik a MetalFX.
2014-ben az Apple bemutatta új grafikus és játékmegjelenítési technológiáját, a Metal nevet.
A Metal egy olyan renderelő API, amely gyors teljesítményt biztosít az Apple hardverére optimalizálva. Az Apple Silicon GPU-k megjelenésével a Metal még nagyobb teljesítménynövekedést kap.
A számítógépes játékok grafikus megjelenítésének egyik problémája az, hogyan kell nagyszámú sokszöget rajzolni gyorsan modellezhet a nagy felbontású felületi árnyékolókkal és gyorsan effektusokkal. Ahogy nőtt a képkockasebesség és a játékjelenetek bonyolultsága, ez a probléma szűk keresztmetszetek kialakulásához vezetett a grafikus renderelő folyamatokban.
A Metal API egy Apple C++ API, amely saját árnyékolási nyelvvel rendelkezik, amelyet – ahogy az várható volt – Metal Shading Language (MSL) néven. A Metal API-t a Windows rendszeren futó DirectX 12-vel vagy a harmadik féltől származó Vulkan grafikus renderelő könyvtárral hasonlították össze.
A Metal API-nak létezik Swift és Objective-C verziója is.
Mivel azonban a Metal az Apple-től származik, és az Apple hardveréhez készült, a legjobb grafikus megjelenítési teljesítményt nyújtja az ezeken az eszközökön elérhető renderelési technológiák közül.
Mintát láthat a Metal renderelésről minden alkalommal, amikor elindít egy Apple Arcade játékot iOS-vagy tvOS-eszközön – ez a rövid Apple Arcade logó visszapattanó animáció, amely azelőtt fut le, hogy minden Apple Arcade játék Metal használatával renderelne..
Sok játék GPU hardveres gyorsítást és előre kiszámított shadereket használ a grafikai megjelenítés felgyorsítására. A Metalban a grafikus parancsokat előre kódolják, majd elküldik a GPU-nak megjelenítésre.
Az előre kiszámított renderelési állapotok előre megmondják a GPU-nak, hogyan konfigurálja a renderelési folyamatot a maximális teljesítmény érdekében.
A 3D-s jelenetek renderelésekor renderelő árnyékolókat vagy előre kiszámított programokat használnak, amelyek szabályozzák a fényt, a sötétséget és a színeket, hogy valósághűséget és speciális effektusokat biztosítsanak. Az MSL leírja a Metal shader működését.
A Shadereket először 1988-ban vezették be a kereskedelmi szoftverekbe a Pixar RenderMan szoftverével, amely több évtizedes múltra tekint vissza a Mac rendszeren.
A legtöbb modern GPU-megjelenítési folyamatban mind a 3D-s adatok, mind az árnyékoló nyelvi programok a GPU-hoz kerülnek feldolgozásra, amely ezután egy többlépcsős folyamatot vagy folyamatot kezel, amellyel a jelenet minden egyes képkockája létrejön.
A renderelési lépések nagyjából geometriai transzformációt, a modellek háromszögekre és négyszögekre bontását, töredékárnyalatok alkalmazását, mélységi tesztelést és kombinálást, valamint az elzárt felületek és objektumok kizárását foglalják magukban. Az utolsó lépésben mindezt a végső képkockapufferbe kell egyesíteni a megtekintéshez.
Mindez másodpercenként több tucatszor megtörténik a modern GPU-hardveren.
A Metal emellett teljesítményshadereket is tartalmaz – olyan programokat, amelyek felgyorsítják a renderelést, miközben csökkentik a GPU-terhelést. A teljesítmény-shaderek közé tartozik a képszűrés, a neurális hálózat, a fejlett matematika és a sugárkövetés.
A sugárkövetés nagymértékben javítja a 3D modell objektumfelületeit, textúráját és a fényforrások visszaverődését.
2020-ban az Apple bejelentette, hogy áthelyezte a Metalt az Apple Silicon CPU-kra és GPU-kra a sokkal gyorsabb teljesítmény érdekében. A 2022-es WWDC rendezvényen az Apple bemutatott egy új MetalFX funkciót a Metalban.
A MetalFX gyorsabb és pontosabb jelenetmegjelenítést tesz lehetővé bizonyos keretek újraszámításával és élsimításával a renderelt objektumok éleinek újraszámítása és simítása érdekében.
A MetalFX titkos fegyvere a felskálázásnak nevezett technológia.
Az ötlet az, hogy egy objektumot, ill. jelenetet alacsonyabb felbontásban, ami gyorsabbá teszi a képkockapuffer teljes megjelenítését. Ezután a jelenet kinagyításával egy további lépést ad hozzá, mielőtt megjelenik.
Ha a legtöbb jelenetet kisebb méretben renderel, a jelenetek gyorsabban, részletesebben és összetettebben jeleníthetők meg. A legtöbb esetben általában gyorsabb a jelenetobjektumok kisebb méretarányú renderelése, majd a végső képkocka általános felbontásának javítása, mint a teljes jelenet nagyobb végső méretben történő megjelenítése.
A felskálázás használatával a MetalFX gyorsabb jelenetmegjelenítést és több objektumrészletet és élességet biztosít.
Példa a MetalFX felskálázására. A jobb oldali keret élesebbnek tűnik.
A MetalFX két különböző felskálázási típust használ: a térbeli felskálázást és az időbeli élsimítási felskálázást.
A térbeli felskálázás során két Metal osztály-MTLFXSpatialScalerDescriptor és MTLFXSpatialScaler-jön létre. A leíró objektum leírja a térbeli léptékező objektum részleteit, és az MTLFXSpatialScaler objektum elvégzi a tényleges kódolást (a kódolási metódusán keresztül).
A kódolás meghívásakor az MTLFXSpatialScaler objektum létrehozza és renderelési parancsokat küld egy MTLCommandBuffer objektumnak megjelenítésre. Ez a folyamat a jelenet minden képkockájával megismétlődik.
A MetalFX térbeli felskálázása a jelenet részletgazdagságának durván kétszeresét biztosíthatja anélkül, hogy jelentős teljesítményveszteséget okozna.
Az MTLFXSpatialScaler objektumok létrehozása számításilag költséges, és csak akkor szabad megtenni, ha egy alkalmazás elindul, vagy a képernyő felbontása megváltozik.
Az időleges élsimítás-felskálázás során az előző képkocka adatait használják bemenetként az aktuális keret felskálázásához.
A szupermintavételezés és az időbeli mintavételezés olyan technikák, amelyek a keretekből származó egyedi pixeladatokat használják fel a felskálázás érdekében. Mind az egyes pixelekből, mind a több képkockából származó pixelekből mintavétel történik.
Az időbeli élsimítás valamivel számításigényesebb, és további szín-, mélység-és mozgásadatokat igényel a működéséhez.
Íme egy másik példa az élsimítás felskálázására az Apple WWDC prezentációjából:
1080p, bal-és 4K felskálázva a jobb oldalon élsimítás-felskálázással.
A legtöbb MetalFX felskálázási feldolgozásnak a renderelés után, de az utolsó utófeldolgozás előtt kell megtörténnie kereteken történik.
A MetalFX élsimítási felskálázás egyik módja az 1080p képkockák felbontásának növelése, hogy azok megközelítsék a 4K felbontást.
A térbeli felskálázáshoz hasonlóan a MetalFX két osztályt biztosít az élsimítások felskálázásához: MTLFXTemporalScalerDescriptor és MTLFXTemporalScaler.
A MetalFX teljes dokumentációja elérhető az Apple fejlesztői webhelyén. Az Apple egy MetalFX session videót is tartott a WWDC’22-n”Boost performance with MetalFX Upscaling”címmel, amely részletesen leírja a MetalFX használatát, beleértve a mintakódot is.
Számos AAA játék, köztük a No Man’s Sky, már használja a MetalFX-et az Apple eszközökön.
A MetalFX modern grafikus számítási technikákat ígér a jelenetek felbontásának és a játék teljesítményének növelésére a modern GPU-hardveren. Valószínűleg az új Metal technológia forradalmasítja a játékot az Apple eszközökön.