Az NVIDIA még az elmúlt év őszén jelentette be a VR Direct csomagot, amelyet akkor még csak pár szóban jellemeztek, így sok adat a működésre vonatkozóan nem volt. Idén azonban megtört a jég, így a GDC és a GTC rendezvényeken tartott előadások után jobban lehet látni, hogy miről is van szó.
Hirdetés
Azt korábban is említettük, hogy a virtuális valóság első nekifutása töredezett lesz, így tulajdonképpen a virtuális valósághoz tervezett eszközökhöz használható fejlesztőkörnyezet mellé, kellenek majd a gyártói, specifikus megoldások is. Itt arról van szó, hogy hiába ugyanazok a koncepciós alapok, illetve a felmerült problémákra a megoldások hiába egyeznek meg, az ezekre vonatkozó gyártói implementációk már eltérők. Éppen ezért lesz majd külön fejlesztőkörnyezet az NVIDIA és az AMD modernebb hardvereihez. Előbbi a szóban forgó VR Direct, míg utóbbi a LiquidVR, amelyről egy másik hírben számoltunk be.
A VR Direct az NVIDIA leírása szerint két nagyon fontos komponenst kínál. Ezek közül az egyik a több GPU-s leképzés a virtuális valósághoz. Ez nem újdonság, hiszen logikus koncepció, ha a két szem számára a két képkockát két külön grafikus vezérlő képzi le. A videojáték-motorok szempontjából a Valve és a Crytek jelentett be támogatást, így a Source 2 és a CryEngine új verziójába bekerül majd a VR SLI.
A VR Direct másik fontos eleme az asynchronous timewarp. Elméleti szintre lebontva az NVIDIA timewarp feladatot magasabb prioritással futtatja, így a Fermi, Kepler és Maxwell architektúrára épülő GPU-k a beépített, rajzolásra vonatkozó preempcióval megpróbálják előnyben részesíteni a magasabb prioritású feladatokat, hogy a timewarpnak minél hamarabb legyen eredménye, azaz ne késse le a vertikális szinkronizációt.
Az NVIDIA itt kihangsúlyozza, hogy a virtuális valóságnál mindig a gyártóra és az architektúrára kell tervezni, tehát nem szabad általánosítani. Ez azért nagyon fontos, mert az timewarpot sok fejlesztő értéktelennek tartják ugyanakkor csak arról van szó, hogy rosszul implementálják. A problémákon egyébként az sem segít, hogy az AMD és az NVIDIA ajánlásai erre vonatkozóan teljesen eltérnek. Például a LiquidVR esetében csak arra kell ügyelni, hogy a timewarphoz tartozó feladatok aszinkron módban fussanak, és a hardver minden mást automatikusan elintéz. A GeForce-ok azonban teljesen más optimalizálási stratégiát igényelnek.
Az NVIDIA hardverein a VR Direct csomagba épített timewarp nem fog automatikusan csodát tenni, ha a fejlesztő csak a feladatok aszinkron módban való futtatását oldja meg. Ennél sokkal többre van szükség. A vállalat szerint a legnagyobb gond, hogy bizonyos körülmények között a rajzolásra vonatkozó preempció késleltetheti az állapotváltást, ami csökkenti a grafikus vezérlő kihasználását. Ennek megfelelően el kell kerülni azokat a rajzolási parancsokat, amelyek feldolgozása viszonylag hosszú ideig tart, illetve direkten ütemezni kell a timewarp futtatását. Az NVIDIA az utóbbira két megoldást kínál jelenleg. Az NVAPI-n belül a DirectX 11-hez készül kiegészítés (NVAPI_D3D1x_HintCreateLowLatencyDEVICE), míg az OpenGL API egy másik kiterjesztést (EGL_IMG_context_priority) kap. Utóbbi jelenleg csak a Tegra K1 és X1 rendszerchipekhez használható Android operációs rendszeren, de lesz egy WGL és egy GLX verzió is a Windowshoz és a Linuxhoz. Később az új generációs API-khoz is érkeznek kiterjesztések.
Az NVIDIA azt sem titkolta, hogy a következő generációs architektúrákhoz már egy jobb rendszert fognak kidolgozni, így a fejlesztőknek akkor már csak arra kell figyelniük, hogy timewarphoz tartozó feladatok aszinkron módban fussanak, és a hardver majd elintézi a többit. Addig viszont a VR Directen belül az timewarp megfelelő működését szoftveres rásegítéssel kell megoldani.
A VR Direct már elérhető a fejlesztőknek. Természetesen a csomag még nem végleges, de meg lehet kezdeni vele a munkát, illetve a még nem támogatott funkciókkal később kiegészül a rendszer.