The team behind vkd3d has announced the release of version 1.18. Developed and maintained by the Wine project, it’s an open-source library that translates Microsoft’s Direct3D graphics calls to Vulkan, thus allowing Windows applications and games that use Direct3D 12 to run on systems where only Vulkan is available.
One highlight is the addition of CreateCommandList1() from the ID3D12Device4 interface, extending coverage of newer D3D12 features used by modern Windows titles.
But the component that sees the most changes is the shader compiler. vkd3d 1.18 improves HLSL (High-Level Shading Language) handling by performing more constant folding, simplifying math expressions, and flattening if/else branches when older shader models require it. Plus, it also expands support for older Shader Model 1–3 code, adds StructuredBuffer loads, and implements several widely used HLSL intrinsics.
Older Direct3D bytecode gets attention too, with new implementations of instructions like tex, texcoord, texbem, and bem, helping older games translate shader code more reliably.
On the experimental backends side, the Metal Shading Language path now supports compute shaders, additional math functions, integer and floating-point division and remainder operations, and proper translation of signed integer min/max operations. It also allows direct HLSL-to-MSL conversion.
Additionally, the GLSL backend gains support for screen-space derivatives, sin/cos, unsigned division, texel offsets, and shader I/O features used by many engines.
The update also formalizes that text-based shader outputs include a trailing zero byte, making them easier to pass to APIs expecting null-terminated strings. Finally, new interfaces provide additional metadata for old D3DBC shaders, expose compute thread-group sizes (important for Metal), and introduce new bump-mapping parameters.
For more information, visit the announcement. vkd3d 1.18’s source code can be downloaded from GitLab’s project page.
