Wine 專案發布了 vkd3d 1.14 軟體包的版本,其中包含 Direct3D 12 的實現,該實現透過廣播呼叫 Vulkan 圖形 API 來運作。 該軟體包包括具有 Direct3D 3 實現的 libvkd12d 庫、具有著色器模型 3 和 4 轉換器的 libvkd5d-shader 以及具有簡化 Direct3D 3 應用程式移植功能的 libvkd12d-utils,以及一組演示範例,其中包括一個glxgears到Direct3D 12。專案代碼根據LGPLv2.1 進行分發許可。
libvkd3d 庫支援大多數 Direct3D 12 功能,包括圖形和運算設施、佇列和命令清單、句柄和堆疊句柄、根簽章、亂序存取、取樣器、命令簽章、根常數、間接渲染、清除方法 *( ) 和複製*()。 libvkd3d-shader 實作將著色器模型的字節碼轉換為中間 SPIR-V 表示形式。支援頂點、像素、曲面細分、計算和簡單幾何著色器、根簽名序列化和反序列化。著色器指令包括算術、原子和位元操作、比較和資料流控制運算子、採樣、收集和載入指令、無序存取操作(UAV,Unordered Access View)。
在新版本中:
- 新增了對 Apple 在 Metal 圖形 API 中使用的 MSL(金屬著色語言)著色器語言的初始支援。
- 實現了對二進位效果的反彙編器支援。
- libvkd3 函式庫實作了 ID3D12GraphicsCommandList1 介面中的 OMSetDepthBounds() 方法,用於動態變更 Z 緩衝區中深度值的允許範圍。
- 新增了 VKD3D_CAPS_OVERRIDE 環境變量,以覆蓋為應用程式提供的有關可用功能的信息,例如支援的最大功能等級和資源綁定。
- HLSL 著色器語言實作中新增了對曲面細分著色器的初始支援。實作了內建函數 dst()、f32tof16()、mad()、modf() 和 sincos()。對於設定檔 1、2 和 3 著色器模型,新增了對「丟棄」操作的支援。新增了對片段著色器的輸入資料語意 SV_SampleIndex 和計算著色器的 SV_GroupIndex 的支援。
- GLSL 著色器語言的大部分新指令已經實作。
來源: opennet.ru
