Nem kínál egyszerű átmenetet a játékfejlesztőknek a Microsoft

A shader fordító cseréje akkora váltást jelent, hogy a régi shader modelleket nem is támogatja.

A Microsoft nemrég leplezte le, hogy új és egyben nyílt forráskódú shader fordítót hoznak a Windows 10 Creators frissítésében. Ez már kipróbálható a fejlesztők egy részének, feltéve persze, ha be tudják szerezni a gyártóktól a megfelelő meghajtókat, de a lényeg a váltás levezénylésének megkezdése. A reform ráadásul elég nagy lesz, mivel tulajdonképpen mindent lecserél a cég, ami az elavult modellre vonatkozik.

A fentiek konkrétan azt jelentik, hogy az eddig használt fxc nevű fordítót a dxc váltja, ami már nem D3D bájtkódot (D3BC), hanem DXIL-t állít elő. Ez a Microsoft új, modern reprezentációs formátuma, és ehhez mindenképpen shader modell 6.0-nak megfelelő profilú kódot kell írni. A korábbi shader modell profilokat az új fordító el sem fogadja. Ez önmagában különösebb problémát nem jelent, mert a HLSL szintjén a bevezetett újítások mellett csak a meglévő kódok újrafordítására kell figyelni, illetve ritka esetekben a kód módosítására is szükség lehet. Hasonlóra egyébként volt már példa, mivel a DirectX 10 bevezetésével az akkori shader fordító frissítése például minimum megkövetelte shader modell 2.0-s profilú kódokat, de a mostani váltás rendkívül éles, mivel csak a legújabb shader modell profilt fogadja el.

Az éles határvonal ott jelent majd problémát, hogy a fejlesztőknek nem elég az érkező játékokba a DXIL kódokat szállítani, mivel ezeket csak azok a rendszerek képesek futtatni, amelyeknél a meghajtó visszajelzi a shader modell 6.0-ra vonatkozó támogatást. Márpedig ennek az aktuális minimum igénye a Windows 10 Creators frissítése mellett egy D3D_FEATURE_LEVEL_12_0 szintet támogató grafikus vezérlő. Ez azért probléma, mert a támogatás tulajdonképpen leszűkül az AMD GCN2, GCN3 és GCN4, az NVIDIA második generációs Maxwell és Pascal, illetve az Intel Gen9 és Gen9.5 architektúrájára. Ergo, ha az aktuális minimum igények nem csökkennek, akkor a shader modell 6.0-t az AMD első generációs GCN, az NVIDIA Kepler és első generációs Maxwell, valamint az Intel Gen7.5 és Gen8 architektúrája képtelen lesz támogatni, így egyetlen olyan DirectX 12-es program sem indul majd el ezeken a hardvereken, amely csak DXIL kódokat használ. Szerencsére a követelményeket a megjelenésig lejjebb akarják vinni, így van egy olyan tervezet, amely alapján a DXIL kódok futtatását nem a D3D_FEATURE_LEVEL_12_0 szint támogatásának megléte, hanem pusztán a meghajtó válasza határozná meg, miszerint az adott hardver képes-e kezelni a kódot vagy nem. Ezzel a most kieső architektúrákon, vagy legalábbis ezek egy részén megoldható lenne a programfuttatás.

A D3BC-t, vagyis a D3D bájtkódot azonban mindenképpen kell szállítani az adott játékba, mert a Windows 10 Creators frissítése megmarad szoftver oldali minimum követelménynek, így gondolni kell a Windows 7 és Windows 8.1 operációs rendszerekre is, amelyek nem tudnak majd mit kezdeni a DXIL kódokkal. A legegyszerűbb módszer egyébként egy konvertert írni erre, ami a lefordított DXIL-t D3BC kóddá alakítja át, így a fejlesztők ki tudják használni az új lehetőségeket is, és eközben, ha nem is maximális teljesítmény mellett, de az idősebb hardvereket és Windows operációs rendszereket is támogatni tudják. Persze alternatív lehetőség a meglévő kódokból DXIL-t és D3BC-t is fordítani.

Egy ekkora váltásnak persze vitathatatlan előnye is van. Legalább kompromisszummentes lett a reform, ami hosszabb távon mindenképpen kedvező, még akkor is, ha egy kis ideig kellemetlenséget fog okozni.

Előzmények

Hirdetés