A vkd3d projekt csapata bejelentette az 1.18-as verzió kiadását, amely a Wine kiegészítő fejlesztéseként működik, és kulcsszerepet játszik abban, hogy a Microsoft Direct3D 12 grafikus hívásait Vulkan hívásokra fordítsa le. Ezáltal a Windows-alkalmazások és játékok, amelyek D3D12-re épülnek, futtathatókká válnak olyan rendszereken, ahol csak Vulkan áll rendelkezésre, jelentősen bővítve a kompatibilitást Linuxon és más platformokon. A frissítés kiemelkedő újdonsága a CreateCommandList1 metódus hozzáadása az ID3D12Device4 interfészből, ami kiterjeszti a újabb D3D12 funkciók támogatását, így modernebb Windows címek is jobban futnak.
Tartalomjegyzék

Javítások a vkd3d shader fordítójában
A vkd3d legnagyobb változásai a shader compilerben történtek, ahol jelentősen javult a HLSL, vagyis a High-Level Shading Language kezelése: több „constans folding” műveletet végez, egyszerűsíti a matematikai kifejezéseket, és lecseréli az if/else ágakat, ha régebbi shader modellek szükségessé teszik. Emellett kibővült a támogatás a régi Shader Model 1-3 kódokra, bekerült a StructuredBuffer betöltések kezelése, valamint számos gyakran használt HLSL intrinsic implementáció. A régebbi Direct3D bytecode sem maradt ki, mivel új utasításokat valósítottak meg, mint a tex, texcoord, texbem és bem, ami megbízhatóbbá teszi a régi játékok shader kódjának fordítását.
Kísérleti backendek bővítése, egyéb újdonságok
A kísérleti háttér-fordítók terén is komoly előrelépések történtek, hiszen a Metal Shading Language támogatása kibővült a számítási shaderekkel, további matematikai műveletekkel, valamint egész- és tizedes számok osztási és maradékos műveleteivel, plusz a pozitív-negatív egész számok minimum/maximum kiszámításának pontos leképezésével, ráadásul most már közvetlenül át lehet alakítani a HLSL kódot Metal Shading Language-re anélkül, hogy köztes lépések kellenének. A GLSL fordítóban bekerültek a képernyőtérben számolt derivatívák, a szinusz/koszinusz függvények, az előjel nélküli osztás, a texel eltolások, valamint sok játékmotor által használt bemeneti/kimeneti shader funkciók, ami jobb kompatibilitást biztosít a különböző grafikus motorokkal.
További kisebb, de hasznos változtatások között szerepel, hogy a szöveges shader kimenetek mostantól egy záró null bájtot kapnak, ami segíti a kompatibilitást más API-kkal, új interfészek adnak extra információkat a régi D3D bytecode shaderekhez, láthatóvá teszik a számítási szálcsoportok méreteit a Metal számára, és új paramétereket vezettek be a bump-mappinghez.
A forráskód elérhető a GitLab projektoldalán.
