經過一年半的開發,he Wine 項目宣布啟動 新版本的包 «vkd3d 1.3" 使用 Direct3D 12 實現,該實現通過轉換對 Vulkan 圖形 API 的調用來工作。
這個版本包含各種改進,其中在這個新版本中的亮點是 初始 HLS 構建支持L,以及 Shader Model 5.1 描述符數組支持,支持卸載 Direct3D 著色器等。
對於那些不知道包裹的人,他們應該知道 包括帶有 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的調用都已實現 並且測試主要在一組演示應用程序上進行。
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