該項目 Wine已發布了vkd3d 1.2軟件包的新版本 同 Direct3D 12實施 通過將調用轉換為Vulkan圖形API來工作。
vkd3d 1.2的新版本 包含各種改進, 但最突出的是 libvkd3d-shader作為公共庫的可用性中, 著色器支持 細分,以及流量輸出支持。
包裝並包括具有Direct3D 3實現的libvkd12d庫,libvkd3d-shader 帶有模型4和5著色器轉換器以及libvkd3d-utils,具有簡化Direct3D 12應用程序遷移的功能,以及一組演示,包括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