A GDC 2020 sok más rendezvényhez hasonlóan szintén elmaradt, ugyanis a rendezők féltik a résztvevőket a koronavírus jelentette veszélytől. Ez persze nem akadályozza meg a vállalatokat abban, hogy az eseményre tartogatott bejelentéseikkel közlemények formájában mégis előrukkoljanak – így tett a Microsoft is a DirectX 12 Ultimate bemutatása kapcsán.
A DirectX 12 Ultimate igazából egy gyűjtőnév lesz, ami négy fontos technológiát tartalmaz a DirectX 12 Feature Level 12_1-hez képest, ezek pedig nem teljesen újak, hiszen már korábban is rendelkezésre álltak, most azonban egységes keretek közé hozzák őket, amivel az első és legfontosabb cél, hogy közös nevezőre kerülhessenek a számítógépek és a játékkonzolok. A DirectX 12 Ultimate nevezéktan jóvoltából könnyebb lesz megállapítani, egy adott hardver milyen képességekkel rendelkezik, illetve azt is, hogy az adott játékoknak milyen hardverigényük van, ami átláthatóbb állapotokat eredményez.
A DirectX 12 Ultimate igazából nem egy új API, sokkal inkább egy új szolgáltatáskészlet/ funkciógyűjtemény, ami egy kalap alá hoz négy fontos, a jövőben meghatározóvá váló technológiát, ezek pedig nem mások, mint a DirectX Ray Tracing, a Variable Rate Shading, a Mesh Shaders, illetve a Sampler Feedback. Ezek többsége ilyen-olyan formában már egy ideje elérhető a DirectX 12 részeként, viszont a DirectX 12 Feature Level 12_1 bejelentése óta sok idő eltelt, érkeztek új hardverek is, amelyek bevezettek néhány új technológiát, így ezeket most érdemes egy friss csomagba gyúrni. A fenti technológiák egyébként egyelőre az Nvidia Turing architektúrája köré épülő megoldásokban érhetőek el (GTX 16, RTX 20), de az AMD hamarosan érkező RDNA2 architektúrája is támogatni fogja őket.
A friss csomag egyik képviselője a DXR 1.1, ami az aktuális DXR 1.0-hoz képest újításokat hoz. Maga a DirectX RayTracing egyébként a fények, fénytörések és a tükröződések élethű megjelenítéséről gondoskodik, vagyis mindenről, amire egy fénysugár szimulálásával kapcsolatban szükség lehet. A DXR 1.1 újításai közé tartozik, hogy segít a sugárkövetés egyszerűbb és hatékonyabb alkalmazásában. Például a sugárkövetéssel kapcsolatos feladatok megkezdéséhez nem lesz szükség többé a CPU közbenjárására, azokat a GPU is kezdeményezheti, ami sokkal hatékonyabb munkavégzést tesz lehetővé. Hasonlót már Compute Kernelek szintjén is megvalósítottak, most azonban a Ray Tracing számára is elérhető lesz a módszer. DXR 1.1 fronton említést kell még tennünk egy egyszerűbb funkcióról is, ami az Inline RayTracing nevet viseli.
Ez igazából a sugárkövetés egyszerűbb változata, ami a GPU renderelő folyamat több lépcsőjében is elérhető, többnyire egyszerűbb feladatokhoz. Ez lehetővé teszi, hogy a fejlesztők még nagyobb kontrollhoz juthassanak a sugárkövetés használatával kapcsolatban, valamint még több helyen vethessék be azt; ráadásul az Inline RayTracing akár olyan shader lépcsőknél is használható, ahol a hagyományos sugárkövetés nem – például Compute Shadereknél. Az Inline RayTracing előnye az egyszerűsége mellett az, hogy sokkal kisebb overheaddel dolgozik, így egyszerű feladatokhoz ideális, míg a normál RayTracing a komplexebb feladatokhoz jöhet jól.
A csomag része VRS, azaz a Variable Rate Shading is, ami az Nvidia Turing architektúrájával mutatkozott be. Itt a lényeg az, hogy egy képkockán belül eltérő képminőséget lehet használni a szem előtt lévő tartalmaknál, illetve a kevésbé fontos részleteknél, ahol az alacsonyabb felbontást lényegében észre sem lehet venni. Ez, vagyis bizonyos területek kisebb részletességgel való renderelése segít abban, hogy erőforrást takarítson meg a rendszer – bizonyos területeken éppen ezért jobb renderelési minőség vethető be az említett előny miatt.
A VRS egyébként két szinttel rendelkezik, a DirectX 12 Feature Level 12_2 pedig a jobb, hatékonyabb változatát veti be, azaz a Tier 2-t. Ez lényegében lehetővé teszi, hogy a Shading Rade lényegében egyetlen Draw Call-on belül variálható legyen, ami elég részletes beállítási lehetőséget ad a fejlesztők számára. Maga a funkció egyébként már egyes játékokban is elérhető, gondoljunk csak a Wolfenstein II-re, ám még egyelőre eléggé szűk körben használják. A VRS-nek komoly szerepe lesz az Xbox Series X konzolnál, ahol a Microsoft a 4K-s felbontást veszi célba, ugyanis a funkcióval erőforrás-takarékosabbá tehető a renderelés, így könnyebb lesz megbirkózni a magasabb felbontás extra erőforrás-igényeivel.
Persze nem csak az Xbox Series X profitálhat a VRS-ből, hanem a VR headsetek is, ahol a Fovated Rendering technika segítségével a felhasználó nézőpontjának középpontját magas minőségben renderelheti le a rendszer, míg a periférián helyet foglaló részleteket alacsonyabb minőségben, hiszen azokat úgy sem látja élesen. Ez az erőforrás-takarékos megoldás segít a teljesítmény növelésében, illetve a VR képkockák renderelésével kapcsolatos feladatok csökkentésében is, így a felszabaduló teljesítményt egyéb dolgokra lehet költeni. És a módszer a VR elterjedését is segítheti, hiszen kevésbé erős hardverrel is ki lehet majd szolgálni a VR Headseteket, a nagyteljesítményű rendszereknél pedig növelni lehet a képminőséget a felszabadult erőforrásokkal.
A harmadik funkció a Mesh Shaders nevet viseli, ami lényegében következő generációs geometriai futószalagként fogható fel. Az újítás leszámol a régi, feleslegesen komplex és emiatt nem is igazán hatékony, sok lépcsővel dolgozó geometriai futószalaggal. A fejlesztők ennek köszönhetően nem kell, hogy egy teljesen fix és „kőbe vésett” futószalagot kövessenek, helyette közel teljes kontrollt kapnak a folyamat felett, így az aktuális igényeknek és feladatnak megfelelően oszthatják el a feladatokat.
A Mesh Shaders elsődleges célja, hogy a geometriai futószalag hatékonyságát jelentősen növelje, valamint lehetővé tegye a fejlesztőknek, hogy részletesebb geometriát használhassanak az így felszabaduló extra teljesítmény jóvoltából. A hatékonyságot fokozza az Index Buffer Compression, ami segít a komplex geometria okozta extra memória-sávszélesség igény csökkentésében. Mivel azonban új módszerről van szó, a fejlesztőknek hozzá kell szokniuk, meg kell tanulniuk hatékonyan kezelni, ez pedig mindenképpen időbe telik, főleg azért, mert elég nagy változásról van szó az eddigi gyakorlathoz képest. Ez a funkció egyébként a 12_2 előtti hardvereken nem is fut, ahogy a másik három sem.
A negyedik újítás a Sampler Feedback, ami szintén az Nvidia Turing architektúrájával mutatkozott be, de később az AMD RDNA2, illetve az Intel Xe is támogatni fogja. Lényege, hogy lehetővé teszi a játékmotorok számára, hogy figyelemmel kísérjék, az adott textúraminták hogyan kerülnek felhasználásra, illetve hogyan lesznek használatban, így a visszajelzés alapján a játékmotor intelligensebb döntéseket tud hozni, valamint azt is „látni fogja”, hogyan vannak használatban a samplerek és milyen erőforrások maradnak a VRAM-ban.
Ez a Microsoft tervei szerint javítani fogja a textrúa streamelést, ugyanis a visszajelzés birtokában a játékmotor meg tudja határozni, mely textúrákra lesz szükség, így csak azokat tölti be, ezáltal a VRAM-ra nehezedő teher csökken. Utóbbi miatt a fejlesztők magasabb minőségű textúrákat használhatnak, ehhez pedig kevesebb VRAM-ra lesz szükség, mint korábban, hiszen a felesleges csempék nem foglalják majd a fedélzeti memóriát.
Ez a funkció remekül passzol az Xbox Series X játékkonzolhoz, ahol a játékok egy nagysebességű SSD-n foglalnak helyet, így a szükséges csempék nagyon gyorsan behúzhatóak a tárhelyről, vagyis nem kell őket a RAM-ban állomásoztatni – nem kell extra lépéseket beiktatni a HDD lassú elérési idejének ellensúlyozására. Ennek a szolgáltatásnak a másik felhasználási területe a Texture-Space Shading, amely szintén a hatékonyság növelését szolgálja: segítségével egy adott objektum shading művelete anélkül végezhető el, hogy raszterizálni kéne azt.
Például egy objektumot fény ér, a megvilágítást elég egyszer kiszámolni, nem kell folyamatosan frissíteni, mint egy raszterizált objektumnál. Itt lényegében az a koncepció, hogy a korábbi árnyalások eredményeit gyorsítótárazni lehessen és szükség szerint többször is felhasználni, ezzel pedig GPU erőforrást lehet megtakarítani, amit hasznosabb és fontosabb feladatokra lehet bevetni.
A DirectX 12 Feature Level 12_2 támogatása az Nvidia Turing, az AMD, RDNA 2, illetve az Intel Xe architektúrája esetében biztosított, a régebbi architektúráknál nem