萨尔瓦多PROYECTO Wine已发布了vkd3d 1.2软件包的新版本 同 Direct3D 12实施 通过将调用转换为Vulkan图形API来工作。
vkd3d 1.2的新版本 包含各种改进, 但最突出的是 libvkd3d-shader作为公共库的可用性中, 着色器支持 细分,以及流量输出支持。
包装并包括具有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的调用都已实现 测试主要在一组演示应用程序上进行。 该版本不包括开发中的功能,例如对复杂的几何着色器和细分的支持,以及与Direct3D 12基本方法和着色器有关的许多增强功能,这些功能将在将来的版本中提供。
Vkd3d 1.2的主要新功能
新版本中最重要的更改是 libvkd3d-shader库可用性 用于第三方项目,因为 添加了各种Direct3D 12功能,例如:
- 多重采样。
- 预留资源。
- 实例数据通过率。
- 所有接口的“私有数据” API。
- 着色器资源视图组件映射。
- VK_KHR_draw_indirect_count扩展名。
- 谓词/条件表示。
- 没有像素着色器的深度渲染。
- 深度切口。 这需要VK_EXT_depth_clip_enable扩展名。
- 丢弃光栅化器。
- 双源混合。
- 放置资源的映射。
- ReadFromSubresource()和WriteToSubresource()ID3D12Resource方法。
- 同时访问多队列资源。
- 空视图。 也就是说,没有基础资源的视图。
- 其他几个功能支持查询。
除此之外, 还强调了对转换,序列化和反序列化签名的附加支持 root(vkd3d_serialize_versioned_root_signature()和vkd3d_create_versioned_root_signature_deserializer(),以及对流输出的支持。
另一个引人注目的变化是 环境变量的实现: VKD3D_CONFIG设置选项以更改libvkd3d和VKD3D_VULKAN_DEVICE的行为,以覆盖Vulkan API的设备。
除此之外 增加了对阴影指令的支持 bufinfo,eval_centroid,eval_sample_index,ld2ms,sample_b,sample_d,sample_info,samplepos 并初步支持5.1型着色器。
并且还支持OpenGL SPIR-V目标环境。 这允许libvkd3d-shader生成的SPIR-V与GL_ARB_gl_spirv一起使用。 这包括对OpenGL原子计数器和组合采样器的支持。
最后 如果您想了解更多 关于此新版本,您可以查看更改的完整列表 在下面的链接中。
如何在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