VKD3D 1.17: bővített HLSL/FX támogatás és új MSL képességek

Segítséget kaptál? Szívesen töltöd itt az idődet? Visszajársz hozzánk? Támogasd a munkákat: Ko-fi és Paypal!

kami911 képe

A VKD3D 1.17 a Wine projekt legújabb verziójaként jelent meg, amely a Direct3D 12 API-t Vulkanra ülteti át. A VKD3D az upstream Wine része, és különbözik a Valve által a Protonhoz készített VKD3D-Proton verziótól, amely a Steam Play keretében kerül szállításra. A 1.17-es kiadás legfontosabb újdonsága az HLSL shader támogatás kiterjesztése a thread group shared memory-re, ami elősegíti a hatékonyabb párhuzamos számításokat. Emellett új funkciók kerültek az Apple/macOS számára kísérleti Metal Shading Language (MSL) célpontban, és több hibajavítás is történt.

A libvkd3d modulban implementálták az ID3D12Device5 interfész EnumerateMetaCommands() metódusát, ami új lehetőségeket biztosít a meta-parancsok kezelésében.

A libvkd3d-shader komponens számos fejlesztést kapott az HLSL forrás típushoz, többek között:

  • Thread group shared memory kezdeti támogatása.
  • Geometriai shaderek fejlesztett támogatása, beleértve a shader model 5 több kimeneti streamjét, valamint a különböző SV_ változókat (pl. SV_IsFrontFace, SV_RenderTargetArrayIndex).
  • Strukturált változók bemeneti/kimeneti szignatúrájának megfelelő kezelése.
  • Hull shader control point átadása, shader entry point visszatérési értékek előre allokálása.
  • Jobb előfeldolgozó támogatás include direktívákhoz és üres fájlokhoz.
  • Memóriabarrier intrinsics támogatás Shader Model 4-ben (korábban csak SM5-ben volt elérhető).
  • Parser támogatás a noise() intrinsics-hoz és StructuredBuffer erőforrásokhoz.

Az FX forrástípus is új funkciókat kapott, például shader blob hozzárendelések és FXLVM érték kifejezések kezelése, névtelen struktúrák támogatása, explicit constant buffer bind pointok és a padding/alignment kezelése az FX 4.0 buffer méretezésnél. A kísérleti MSL célpont támogatja a textúra mintavételezést, ciklusokat és switch szerkezeteket, screen-space parciális deriváltakat, különböző egész szám műveleteket, valamint fragment és vertex shader bemeneteket, például SV_Position, SV_SampleIndex és SV_VertexID. DXIL shader-ek MSL-re történő konvertálásához a dxbc-dxil forrástípus használható az MSL célponttal kombinálva.

A tx forrástípus lehetővé teszi a D3DX tx_1_0 textúra shaderek disassemblálását a d3d-asm célponttal. A SPIR-V célpont képes OpSource és OpLine debug információk kimenetére, és a disassembler grammatikája frissült a Vulkan SDK 1.4.313.0 verzióhoz. A vkd3d-compiler új tx forrástípust vezetett be, amely a D3DX tx_1_0 shadereket specifikálja, míg a vkd3d-teapot demo a tesszellációs shadereket használva rendereli Martin Newell híres teáskannáját. Érdemes megjegyezni, hogy a jelenlegi MoltenVK verziók nem támogatják minden szükséges funkciót a demo helyes futtatásához.

Összességében a VKD3D 1.17 jelentős előrelépés a Direct3D 12 Vulkanra történő implementációjában, új shader képességeket és jobb MSL/FX támogatást biztosítva a fejlesztők és Linux/macOS felhasználók számára.

Az újdonságok teljes listája a bejelentésben található letölthető innen.

Ahogy mindig, a vkd3d csapat folyamatosan dolgozik az alkalmazás továbbfejlesztésén és optimalizálásán, hogy a DirectX alkalmazások zökkenőmentesen fussanak Vulkan környezetben is.