Vélemény: nincs sok értelme DirectX 12 portokat készíteni?

A napokban felborzolta a PC-s játékpiacot Dan Ginsburg SIGGRAPH alkalmával ejtett kijelentése. A Valve szakembere azt mondta, hogy ha nem lebeg a fejlesztők előtt az idei megjelenés, akkor nincs sok értelme DirectX 12 portot készíteni egy videojáték-motorba.

Ezt a kijelentést érdemes egy picit elemezni. A DirectX 12-ről az elmúlt hónapokban sokat írtunk, míg a Vulkan API terjedése csak néha került szóba. Röviden leírható, hogy mindkét API célja ugyanaz, és az alapok is szinte közösek, de azért lesznek különbségek a funkciók támogatása szempontjából. Persze a Vulkan API specifikációja még nem érhető el, de annyi már most biztos, hogy az API reagál egy olyan problémára, amire a Microsoft nem reagált a DirectX 12-ben. Utóbbi nyilván szándékos döntés volt, de az kétségtelen tény, hogy a ma is alkalmazott D3D bájtkód egy rendkívül elavult köztes réteg a ma elérhető modernebb hardverek képességeit tekintve. A Vulkan API alternatívája a SPIR-V, amely már egy modern igényekhez tervezett köztes réteg, és technikai értelemben ez tekinthető a Khronos Group legnagyobb fegyverének.

Ha szigorúan úgy nézzük a helyzetet, hogy egy teljesen nulláról írt motorról beszélünk, amelyhez nulláról írják a fejlesztők a shadereket, akkor valóban igaza van Dan Ginsburgnak, mivel a Vulkan technikailag jóval többet enged meg a DirectX12-nél, így logikus az előbbit választani. Nulláról azonban nagyon kevés cég dolgozik. Sőt, inkább azt lehet mondani, hogy szinte senki, és itt jön elő egy probléma. A fejlesztőknek ugyan nagyon egyszerű lesz egy-egy új grafikus API-t implementálni egy jól felépített videojáték-motorba, de a shader programok zöme HLSL-ben lett írva. Ezeket nem éri meg átírni egy olyan nyelvre, amit a Vulkan API is támogat, mert itt sok tízezer sornyi programkódról beszélünk, amelyek zömét folyamatosan optimalizálják.

Öröm az ürömben, hogy a SPIR-V egy nyílt kezdeményezés, és a Vulkan tulajdonképpen csak ezt a bájtkódot fogadja el. Tehát abszolút nem érdekli az API-t, hogy maga a shader program milyen magas szintű nyelven íródott. Ez azt jelenti, hogy szabadon írható egy olyan fordítót, amely a HLSL kódokat SPIR-V-re fordítja és ezt a kódot lehet szállítani a programban. Viszont egyelőre nincs bejelentve egyetlen ilyen képességgel rendelkező fordító sem. Ez persze nem jelenti azt, hogy később nem készül egy, és erre akár a Valve is fordíthatna figyelmet, mert ma a legnagyobb ellenérvet a Vulkan esetében a meglévő HLSL kódok jelentik, amelyek például a DirectX 12-höz gond nélkül használhatók.

Pusztán a technikai alapokra levetítve a dolgokat, az előzetes specifikációk alapján a Vulkan mindenképpen jobb API, mint a DirectX 12. Többek között olyan dolgokat is tud, amelyeket a fejlesztők régóta kérnek, de nem kerültek bele a Microsoft API-jába. Ilyen például a programozható MSAA mintavétel, a template-eket támogató shader nyelv, illetve a crosslane swizzle. Ezek minden modernebb grafikus vezérlőben elérhetők, tehát túl sok ellenérvet nem lehet felhozni ellenük. Többek között az Xbox One és a Playstation 4 konzolokon is használhatók, vagyis a PC-t fel kellene zárkóztatni itt is.

A Valve szakembere a Vulkan alapvető előnyét viszont nem ezekkel hirdeti, hanem a több platformra való elérhetőséggel. Ez kétségtelenül igaz. A DirectX 12 csak Windows 10-re van, míg a Vulkan lesz egy csomó operációs rendszerre, beleértve a Windows 10-et is. Azt azonban ehhez hozzá kell tenni, hogy a Vulkan egy modern API, így modern driver modellt is igényel. A DirectX 12 leginkább azért van a Windows 10-hez kötve, mert a WDDM 2.0 kínál elég jó alapot hozzá. A többi operációs rendszer driver modellje még akkor sem lenne igazán jó, ha az API nem lenne hozzákötve az új Windowshoz.

A helyzet az, hogy ez a tényező a Vulkan API-t is érinti. Bár funkcionálisan a program működni fog például Windows 7, 8, 8.1 operációs rendszeren is, de a legjobb teljesítményhez egy WDDM 2.0-hoz hasonló, modern driver modell ajánlott. Persze ezt nyilván nem fogja kimondani a Valve, mert a WDDM 2.0 képességei messze túlmutatnak minden alternatív driver modellen, beleértve a SteamOS-ét is, de ettől ez még tény marad. Ez pedig rövidebb távon sok kérdést eldönt a fejlesztőknél, mivel a Vulkan API Windows 10 nélkül félkarú óriás lesz. Hosszabb távon viszont sokkal nagyobb potenciál van a Khronos Group fejlesztésébe. Emiatt úgy gondoljuk, hogy első körben ugyan a DirectX 12-re lesz több program, de idővel egyre több fejlesztő fogja Vulkan API-t választani elsődlegesen a SPIR-V elérhetősége miatt.

Azóta történt

Előzmények

Hirdetés