用心打造
VPS知识分享网站

vkd3d 1.18发布:Direct3D转Vulkan迎来HLSL大幅改进,旧版Shader兼容性更强

本文于 2025-11-21 15:10 更新,部分内容具有时效性,如有失效,请留言

vkd3d 团队正式发布 vkd3d 1.18。作为 Wine 项目维护的开源库,vkd3d 的使命是将 Microsoft Direct3D 图形调用转换为 Vulkan,从而让大量依赖 Direct3D 12 的 Windows 应用与游戏在仅支持 Vulkan 的平台上运行(例如 Linux 系统、Steam Deck 等)。

本次更新内容丰富,涵盖 D3D12 接口扩展、HLSL 编译器优化、旧版字节码改进,以及 Metal / GLSL 实验性后端增强,堪称跨平台兼容性的一次重要升级。

vkd3d 1.18发布:Direct3D转Vulkan迎来HLSL大幅改进,旧版Shader兼容性更强

⭐ 更广的 Direct3D 12 支持

vkd3d 1.18 增加了对 ID3D12Device4::CreateCommandList1() 的支持,这是现代 Windows 游戏广泛使用的新接口之一,进一步提升了与最新游戏引擎的兼容度。

⭐ HLSL 编译器的大幅提升(本次最大亮点)

新版对 HLSL 处理进行了全面升级,重点包括:

✔ 更智能的优化

  • 执行更多常量折叠(Constant Folding)
  • 简化数学表达式
  • 在旧版 Shader Model 需要的场景中自动扁平化 if/else 分支

这些优化能显著提升翻译效率、减少运行异常。

✔ 更广泛的 Shader Model 支持

  • 改进旧版 Shader Model 1–3 的转换能力
  • 增加 StructuredBuffer 加载
  • 实现多个常用 HLSL inline 内联函数

这对许多老游戏和旧引擎的兼容性非常关键。

⭐ 旧版 Direct3D 字节码更好用了

对旧版 Direct3D 的字节码(D3D Bytecode)进行了重要增强:

  • 新实现了 tex、texcoord、texbem、bem 等纹理操作指令

这些改进能帮助早期 DirectX 游戏更可靠地翻译 Shader,使画面效果更稳定、Bug 更少。

⭐ 实验性后端:Metal 与 GLSL 同样进步显著

🔧 Metal Shading Language (MSL) 后端

MSL 路径新增以下能力:

  • 支持 Compute Shader(计算着色器)
  • 支持更多数学函数
  • 支持整数/浮点数除法与取余
  • 正确转换有符号 min/max 运算
  • 支持 直接 HLSL → MSL 转换

这对 macOS 及 iOS 平台意义重大,特别是在跨平台游戏移植领域。

🔧 GLSL 后端

GLSL 方向新增了:

  • 屏幕空间导数(Screen-space derivatives)
  • sin/cos 等三角函数
  • 无符号除法
  • 纹素偏移(Texel offset)
  • 多种常见 Shader I/O 功能

使 Vulkan → OpenGL 的兼容性更好、更稳定。

⭐ 其他改进

  • 文本格式的着色器输出现在带 尾随零字节(null terminator),方便传给要求 C-string 的 API
  • 为旧的 D3DBC Shader 新增更多元数据
  • 新增凹凸贴图相关参数
  • Metal 后端更清晰地公开计算线程组大小(对 Compute Shader 很关键)

本次更新整体围绕“兼容性、优化与跨平台”展开,对 Wine、Proton、Linux Gaming、游戏移植都有重要意义。

赞(0)
未经允许不得转载;国外VPS测评网 » vkd3d 1.18发布:Direct3D转Vulkan迎来HLSL大幅改进,旧版Shader兼容性更强
分享到