Jön a traversal shader a DirectX Raytracingbe

A Microsoft opcionális funkcióként teszi majd elérhetővé az új futószalaglépcsőt, amit eleinte nem lesz kötelező támogatni.

Az elmúlt időszakban többször írtunk arról, hogy az AMD elkezdett kerülőutakat járni a sugárkövetést tekintve, hiszen a szabványos implementációkon túl kínálnak olyan megoldást, amely lehetővé teszi a programozható bejárást. Ez nem egy olyan funkció, ami csak úgy kipattant a cég fejéből, hanem az új generációs konzolokon egy már támogatott eljárás, a PlayStation 5-re a Sony eleve úgy írta meg a grafikus API-t, hogy képes legyen egyedi shadert futtatni a bejárási lépcső szintjén, és erre egyébként van válasza a Microsoftnak is az Xbox Series S és X gépek tekintetében. A redmondiak technológiája ugyan még nem végleges rendszer, de működik, és ami jó hír, hogy most már biztosan érkezik a PC-s DirectX Raytracingbe is, méghozzá traversal shader néven.

Az új struktúratípus az Xbox Series S és X konzolokhoz tartozó leírás szerint lehetővé teszi azt, hogy egy már kilőtt sugár esetében, bizonyos előre meghatározott pontokon túllépve tetszőlegesen megválasztható legyen a gyorsítóstruktúra. Ezzel gyakorlatilag a teljes bejárási lépcső programozhatóvá válik.

Bár magát a traversal shadert akármilyen, legalább compute shadert támogató GPU tudná kezelni, elvégre nem sokkal többet kínál ez a lépcső egy a compute shadernél, eleinte mégsem lesz kötelező a támogatás a PC-n. Ennek az oka az lehet, hogy az AMD és az NVIDIA felfogása a sugárkövetésről eltérő. Az AMD az RDNA 2-t már eleve a programozhatóságra tervezte, így nem is építettek be a multiprocesszorokba fixfunkciós blokkot a bejárási lépcsőre. Ezt már most is egy meghajtóban szállított, PAL-ban futó (ez az AMD saját absztrakciós rétege az új generációs API-khoz) shaderrel kezelik. Az NVIDIA viszont a Turing és az Ampere multiprocesszoraiba is dedikált, fixfunkciós részegységet használ a bejárási lépcsőre vonatkozóan, de a traversal shader bevezetésével ezeket teljesen elvesztik, olyan lesz, mintha be sem építették volna őket a hardverbe. Ez teremti azt a problémás helyzetet, ami miatt az újítás csak opcionálisan érkezik.

A végeredmény tekintetében a traversal shader optimalizálásra használható, olyan algoritmusok alkalmazását teszi lehetővé, amelyeket a mostani környezetben lehetetlen bevetni. Ezek közül a legfontosabb, hogy a sugár kilövése ne egy előre meghatározott LOD szintre történjen, hanem legyen ez teljesen dinamikusan kezelve. Ennek az lesz a fő előnye, hogy egy sugárkövetést használó effekt sokkal kevésbé fogja terhelni a GPU fedélzeti memóriáját, illetve némileg csökken a bejárásra vonatkozó számításigény is. Ezekkel az optimalizálásokkal azonban nem kötelező élni, maga a sugárkövetést használó effekt mindenképpen futni fog egyedi traversal shader nélkül, még akkor is, ha az adott alkalmazás tartalmaz erre írt programkódot. A különbség annyi, hogy hagyományos módon az adott effekt VRAM-igénye sokkal nagyobb lesz.

A rendszert egyébként hardverspecifikusan is lehet alkalmazni. Például az NVIDIA dönthet úgy, hogy ha az adott VGA-n van 24 GB VRAM, mint például a GeForce RTX 3090-en, akkor inkább nem futtatnak programkód szintjén szállított traversal shadert, mert nem igazán gond, hogy egy effekt mondjuk elvisz 5-10 GB memóriát, van bőven belőle. Ellenben a kevesebb VRAM-mal rendelkező VGA-kon már alkalmazhatják, mert ott megéri spórolni a memóriával, még akkor is, ha ezért be kell áldozni a bejárási lépcsőhöz tervezett fixfunkciós blokkok működését. Az opcionális traversal shadert tehát nem feltétlenül kell letiltani a teljes termékskálán, a kevesebb VRAM-mal dolgozó hardvereken nyugodtan lehet élni a rendszer jelentős előnyeivel, még akkor is, ha bizonyos fixfunkciós hardverelemek nem kompatibilisek vele, ezek ugyanis egyszerűen letilthatók.

A traversal shader várhatóan a következő nagy Windows 10 frissítésben lesz benne, de azt még nem tudni, hogy végleges vagy csak fejlesztői elérhetőség mellett. Az opcionális funkciókkal a Microsoft általában kevésbé bánik óvatosan, tehát jöhet véglegesítve is, mert nem képezik részét a minimális specifikációknak. Emellett a redmondi óriáscégnek alapvetően jó lenne, ha a fejlesztők a konzolokra írt programozható bejárást nem Radeon Rays 4.0-ra portolnák. Ezzel csak a sugárkövetés platformszintű töredezettsége növekszik, holott máig azért sikerült úgy kézben tartani a DirectX Raytracinget, hogy ne legyen benne gyártóspecifikus rész. Jó lenne erről az irányról nem elmozdulni, főleg nem olyan funkciókkal, amelyek igazából nem igényelnek olyat a hardverektől, amit azok ne tudnának elméletben támogatni.

Az átállást egyébként segítheti, hogy a traversal shader specifikációja PC-n megegyezik majd az Xbox Series S és X konzolokra tervezett rendszerrel, vagyis ugyanazokat a programkódokat a fejlesztők módosítás nélkül használhatják mindkét platformon.

Azóta történt

Előzmények

Hirdetés