發展圖形標準的 Khronos 聯盟,
主要的
-
帶給你 實作著色器程式語言直到準備好廣泛使用HLSL ,由 Microsoft 為 DirectX 開發。 Vulkan 中的 HLSL 支援使得可以在基於 Vulkan 和 DirectX 的應用程式中使用相同的 HLSL 著色器,並且還簡化了從 HLSL 到 SPIR-V 的轉換。要編譯著色器,建議使用標準編譯器
DXC ,由微軟於2017年開放,基於LLVM技術。 Vulkan 支援是透過單獨的後端實現的,它允許您將 HLSL 轉換為 SPIR-V 著色器的中間表示。實作不僅涵蓋所有內建功能
HLSL,包括數學類型、控制流程、函數、集合、資源類型、命名空間、Shader Model 6.2、結構和方法,也允許使用 Vulkan 特定的擴展,例如 NVIDIA 的 VKRay。在 Vulkan 之上的 HLSL 模式下,可以組織《天命 2》、《荒野大鏢客:救贖 II》、《刺客教條:奧德賽》和《古墓奇兵》等遊戲的工作。 - 規格更新
SPIR-V 1.5 ,它定義了所有平台通用的著色器的中間表示,並且可用於圖形和平行計算。
SPIR-V 涉及將單獨的著色器編譯階段分離為中間表示,這允許您為各種高階語言建立前端。基於各種高級實現,單獨產生單一中間程式碼,可供 OpenGL、Vulkan 和 OpenCL 驅動程式使用,而無需使用內建著色器編譯器。 - 核心 Vulkan API 包括 23 個擴展,可提高效能、提高渲染品質並簡化開發。新增的擴充包括:
-
按時間順序的信號量 (時間軸訊號量),統一與主機和裝置佇列的同步(允許您使用一個原語在裝置和主機之間進行全向同步,而無需使用單獨的 VkFence 和 VkSemaphore 原語)。新信號量由單調遞增的 64 位元值表示,可以跨多個線程追蹤和更新。
- 能夠在著色器中使用精度較低的數字類型;
- HLSL 相容記憶體佈局選項;
- 無綁定資源(bindless),透過使用系統記憶體和GPU記憶體的共享虛擬空間,消除了對著色器可用資源數量的限制;
-
正式記憶模型 ,它定義了並發線程如何存取共享資料和同步操作; -
描述符索引 跨多個著色器重複使用佈局描述符; - 緩衝鏈結。
新增的擴充功能的完整清單:
-
VK_KHR_8bit_存儲 -
VK_KHR_buffer_device_address -
VK_KHR_create_renderpass2 -
VK_KHR_depth_stencil_resolve -
VK_KHR_draw_indirect_count -
VK_KHR_driver_properties -
VK_KHR_image_format_list -
VK_KHR_imageless_framebuffer -
VK_KHR_sampler_mirror_clamp_to_edge -
VK_KHR_separate_depth_stencil_layouts -
VK_KHR_shader_atomic_int64 -
VK_KHR_shader_float16_int8 -
VK_KHR_shader_float_controls -
VK_KHR_shader_subgroup_extended_types -
VK_KHR_spirv_1_4 -
VK_KHR_時間線_信號量 -
VK_KHR_uniform_buffer_standard_layout -
VK_KHR_vulkan_memory_model -
VK_EXT_描述符_索引 -
VK_EXT_host_query_reset -
VK_EXT_sampler_filter_minmax -
VK_EXT_標量_區塊_佈局 -
VK_EXT_separate_stencil_usage -
VK_EXT_shader_viewport_index_layer
-
-
添加者 超過 50 個新結構和 13 個功能; - 該規範的縮短版本已針對典型的目標平台準備好了,簡化了尚未支援所有擴展的平台上的工作,並且允許無需選擇性激活 Vulkan API 的基本功能。
- 該專案的工作仍在繼續,以確保與其他圖形 API 的可移植性。例如,Vulkan 提供了允許 OpenGL 轉換的擴充(
辛克 ), OpenCL (類風濕病毒 ,克拉夫克 )、OpenGL ES(手套、角度)和 DirectX(DXVK ,vkd3d )透過 Vulkan API,並且相反,使 Vulkan 能夠在沒有其本機支援的平台上工作(gfx-rs и東邪西毒 用於在 OpenGL 和 DirectX 之上工作,MoltenVK 和 gfx-rs 用於在 Metal 上工作)。
添加了擴充功能以提高與 DirectX 和 HLSL 的兼容性
VK_KHR_host_query_reset、VK_KHR_uniform_buffer_standard_layout、VK_EXT_scalar_block_layout、VK_KHR_separate_stencil_usage、VK_KHR_separate_depth_separate_stencil_usage、VK_KHR_separate_depth_stencil_layouts 與 SP
未來的計劃包括開發機器學習、光線追蹤、視訊編碼和解碼的擴展、支援 VRS(可變速率著色)和網格著色器。
回想一下 Vulkan API
Vulkan 跨越所有可用平台,並為桌面、行動和 Web 提供單一 API,允許跨多個 GPU 和應用程式使用一個通用 API。 由於採用 Vulkan 的多層架構,這意味著工具可以與任何 GPU 配合使用,OEM 可以在開發過程中使用行業標準工具進行程式碼審查、調試和分析。 為了創建著色器,基於 LLVM 並與 OpenCL 共享核心技術,提出了一種新的便攜式中間表示 SPIR-V。 為了控制設備和螢幕,Vulkan 提供了 WSI(視窗系統整合)接口,它解決了與 OpenGL ES 中的 EGL 大致相同的問題。 Wayland 中開箱即用地提供 WSI 支援 - 所有使用 Vulkan 的應用程式都可以在未經修改的 Wayland 伺服器環境中運行。 Android、X11(含 DRI3)、Windows、Tizen、macOS 和 iOS 也可以透過 WSI 進行工作。
來源: opennet.ru