经过一年半的开发,he Wine 项目宣布启动 新版本的包 «vkd3d 1.3" 使用 Direct3D 12 实现,该实现通过转换对 Vulkan 图形 API 的调用来工作。
这个版本包含各种改进,其中在这个新版本中的亮点是 初始 HLS 构建支持L,以及 Shader Model 5.1 描述符数组支持,支持卸载 Direct3D 着色器等。
对于那些不知道包裹的人,他们应该知道 包括带有 Direct3D 3 实现的 libvkd12d 库、libvkd3d-shader 带有模型4和5着色器转换器,以及具有简化Direct3D 3应用程序迁移功能的libvkd12d-utils,以及一系列演示,包括glxgears端口到Direct3D 12的移植。该项目代码已根据LGPLv2.1分发许可。
图书馆 libvkd3d支持Direct3D 12的大多数功能, 包括图形和计算函数、命令列表和队列、描述符和堆描述符、根签名、无序访问、采样器、命令签名、根常量、代理表示等。
Libvkd3d着色器 实现字节码4和5的转换 SPIR-V 中间表示中的着色模型。 支持顶点、像素、曲面细分、计算和简单几何着色器、根签名序列化和反序列化。
着色器指令包括算术,原子和按位运算, 数据流控制和比较运算符,采样,收集和加载指令,无序访问操作(UAV,无序访问视图)。
在当前开发阶段,并非所有对Direct3D 12的调用都已实现 并且测试主要在一组演示应用程序上进行。
Vkd3d 1.3的主要新功能
在展示的这个新版本的 vkd3d 1.3 中,强调了 添加了对在 HLSL 中编译和预渲染着色器的初始支持 (高级着色器语言),从 DirectX 9.0 开始提供。
此新版本中另一个引人注目的变化是 支持着色器中的双精度浮点运算,以及曲面细分着色器的间接、着色器的模板导出、“精确”着色器修改器以及内存资源的全局屏障。
我们还可以发现 从代码中反汇编 Direct3D 着色器的能力 汇编器表示的字节数,并增加了对解析 Direct3D 3、1 和 2 着色器模型中使用的旧 Direct3D 字节码格式的支持。
libvkd3d 添加了 Direct3D 12 功能,例如根签名、无序查找计数器、输出合并布尔值、mirror_once 纹理寻址模式,并添加了 vkd3d_host_time_domain_info 结构。
其他变化 从这个新版本中脱颖而出:
- vkd3d_shader_preprocess_info 扩展了 vkd3d_shader_compile_info 结构,可用于指定预处理参数,例如预处理器宏定义。
- vkd3d_shader_hlsl_source_info 扩展了 vkd3d_shader_compile_info 结构,可用于指定 HLSL 和构建参数,例如目标配置文件和入口点。
- 链接 Direct3D 12 和 Vulkan 模型
- VKD3D_SHADER_COMPILE_OPTION_API_VERSION 可用于指定应用程序所针对的 libvkd3d-shader API 版本。 如果未指定,将使用 VKD3D_SHADER_API_VERSION_1_2。
- 如果 vkd3d-compiler 可以确定
输出是具有彩色功能的电传打印机。 - 添加了对 Shader Model 5.1 中定义的描述符数组的支持。
最后 如果您想了解更多 关于这个新版本,您可以查阅完整的更改列表 在下面的链接中。
如何在Linux上安装vkd3d?
对于那些有兴趣在其系统上安装vkd3d的人,他们应该获取源代码并继续进行编译,尽管出于实际目的或对于那些新手,他们可以毫不费力地尝试使用该库。 为此,他们只需要在其配置中安装lutris。
对于那些对编译感兴趣的人,他们必须使用以下代码获取代码:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"
最后,必须启用Vulkan层:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug