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.

Categories: IT Info