Hatékony trükköt talált az NVIDIA a virtuális valósághoz

Az NVIDIA az idei GDC-n jelentette be a VRWorks csomagot, amely igazából nem tekinthető újnak, mivel nagyrészt a korábban bemutatott GameWorks VR csomag átnevezése, amelynek egyébként korábban VR Direct volt a megnevezése. Igazából nem is ez a lényeg, mivel maga a VRWorks funkcionális újításokat sem igazán tartalmaz az elődökhöz képest, de van egy nagyon érdekes része, amely egyszerűbbé teszi a fejlesztők dolgát. Az NVIDIA a VRWorks mellett megpróbál bizonyos specifikus problémákra reagálni olyan javaslatokkal, amelyek segíthetik a fejlesztőket az aktuális GeForce VGA-k teljesítményének javításában. A legfőbb javaslat az Oculus PC SDK 1.3-as verziójához kapcsolódik, amely például bevezeti az aszinkron timewarp funkciót.

Ezt az újítást az NVIDIA és az AMD másképp működteti, mivel a GeForce-okon a rendszer az NVAPI nevű szervizkönyvtáron keresztül elérhető a magas prioritású kontextusokra épít. Eközben a Radeonokon a GCN verziótól függően Mantle API-n keresztül működő LiquidVR dolgozik, amely normál vagy QRQ-val kiegészített aszinkron shaderrel oldja meg a problémát. Ezekre az előbbi bekezdés végén linkelt hír bővebben kitér, de amit fontos észben tartani, hogy bármennyire is egységesre próbálja tervezni a működést az Oculus, valójában annyira eltérnek a gyártói implementációk, hogy a fejlesztők nem ússzák meg a specifikus optimalizálást.

A helyzet azonban annyira nem kritikus, ugyanis a GCN-es Radeonok kellően finom szemcsézettségű preempciót használnak, hogy a legtöbb körülmény között jól működjön az aszinkron timewarp, illetve esetenként ehhez még kontextusváltás sem szükséges. Problémát jelent viszont, hogy az GeForce-ok csak a kontextusváltással tudnak aszinkron timewarp feladatot indítani, és ez a váltás is csak a batchek határainál lehetséges. Ez például felveti azt a problémát, hogy ha egy rajzolás esetleg 5 ezredmásodpercig tart, akkor az megszakíthatatlan, és ennyivel később kezdődik meg az aszinkron timewarp feladat, vagyis igen nagy lesz az esélye, hogy a reprojekció lekési a szinkronablakot. Sajnos az Oculus ezzel a problémával nem igazán tud mit kezdeni, így általánosan azt javasolják a gyártóknak, hogy lehetőség szerint finom szemcsézettségű grafikus vezérlőket tervezzenek, és ennek az AMD és az Intel is eleget tett. Ugyanakkor van még remény a GeForce-okon is egy új részmegoldás formájában.

Az NVIDIA szerint a fejlesztők figyelembe vehetnének pár tényezőt. Többek között lehetőség szerint törekedjenek arra, hogy az aszinkron timewarp ne ragadjon be egy hosszú rajzolási feladat mögé. Ezt persze sokkal könnyebb mondani, mint kivitelezni, és a gyakorlatban látható, hogy az erőfeszítések ellenére is gondot okoz a megfelelő vezérlés. Emiatt a zöldek előálltak egy új ötlettel. A gondot egyértelműen a hosszú rajzolások okozzák, így például a virtuális valóságra készülő programokat érdemes lenne úgy tervezni, hogy az egész képkocka több mozaikra legyen felosztva, és az utófeldolgozás szép sorban ezeken a mozaikokon futna. Ennek a hátránya, hogy több rajzolási paranccsal jár, illetve a hardveren belül a feldolgozás nem olyan hatékony, mintha az egész képkockára történne. Ugyanakkor a virtuális valóság szempontjából egészen más tényezőket is figyelembe kell venni, például jelen esetben azt, hogy a mozaikok sorban történő feldolgozása azt jelenti, hogy minden mozaikon történő munka végeztével lehetőséget kap a GeForce a kontextusváltásra, és ha sorban áll egy aszinkron timewarp feladat, akkor a következő mozaik helyett beszúrható a reprojekcióra vonatkozó munka. Bár a hardver így a nyers hatékonyságából némileg veszít, viszont megnő az esély arra, hogy a reprojekciók eredménye még a szinkronablakon belül megérkezzen.

Az is jó hír, hogy az NVIDIA feldolgozási ajánlása az AMD és persze az Intel hardverein sem jelent hátrányt, mivel ezek a finomabb szemcsézettségű preempcióval általánosan jól viselik az aszinkron timewarpot. A mozaikos módszert egyébként az adott program fejlesztőjének kell kidolgozni, tehát ez nem egy automatikusan aktiválódó funkció, mint az Oculus PC SDK 1.3-ban található aszinkron timewarp, viszont utóbbi elérhetősége miatt valóban célszerű a virtuális valóságra tervezett programok leképezőjét ilyen formában írni, legalább addig, amíg a piac az aktuális GeForce generációt is célozza az optimalizálással.

Azóta történt

Előzmények

Hirdetés