Chrome 中將啟用 WebGPU 支持

谷歌宣佈在 Chrome 113 分支中默認支持 WebGPU 圖形 API 和 WebGPU 著色語言(WGSL),計劃於 2 月 3 日發布。 WebGPU提供了類似於Vulkan、Metal和Direct12D XNUMX的API來執行渲染、計算等GPU端操作,並且還允許您使用著色器語言編寫GPU端程序。 WebGPU 實現最初只會在 ChromeOS、macOS 和 Windows 的版本中啟用。 對於 Linux 和 Android,WebGPU 支持將在稍後激活。

除了 Chrome 之外,自 2020 年 2021 月起在 Firefox 中測試實驗性 WebGPU 支持,並自 XNUMX 年 XNUMX 月起在 Safari 中測試實驗性 WebGPU 支持。 要在 Firefox 中啟用 WebGPU,請在 about:config 中設置 dom.webgpu.enabled 和 gfx.webgpu.force-enabled 標誌。 目前還沒有計劃在 Firefox 和 Safari 中默認啟用 WebGPU。 為 Firefox 和 Chrome 開發的 WebGPU 實現以單獨的庫的形式提供 - Dawn (C++) 和 wgpu (Rust),您可以使用它們將 WebGPU 支持集成到您的應用程序中。 還正在努力將 WebGPU 支持添加到本地使用 WebGL 的流行 JavaScript 庫中。 例如,Babylon.js 已宣布全面支持 WebGPU,Three.js、PlayCanvas 和 TensorFlow.js 則部分支持。

從概念上講,WebGPU 與WebGL 的不同之處與Vulkan 圖形API 與OpenGL 的不同之處非常相似,但WebGPU 並不基於特定的圖形API,而是一個通用層,使用與Vulkan 中相同的低級基元,金屬和 Direct3D。 WebGPU 為 JavaScript 應用程序提供對 GPU 命令的組織、處理和傳輸的低級控制,管理相關資源、內存、緩衝區、紋理對象和編譯的圖形著色器。 這種方法允許您通過減少開銷和提高 GPU 效率來實現更高性能的圖形應用程序。

WebGPU 可以為 Web 創建複雜的 3D 項目,這些項目可以像直接使用 Vulkan、Metal 或 Direct3D 的獨立程序一樣工作,但不依賴於特定平台。 WebGPU 還提供了其他選項,用於通過編譯為 WebAssembly 將本機圖形程序移植到支持 Web 的形式。 除了 3D 圖形之外,WebGPU 還涵蓋了與將計算卸載到 GPU 端和執行著色器相關的可能性。

WebGPU 的主要特點:

  • 單獨管理資源、準備工作以及向 GPU 傳輸命令(在 WebGL 中,一個對象同時負責所有事情)。 提供了三個獨立的上下文: GPUDevice 用於創建紋理和緩衝區等資源; GPUCommandEncoder用於編碼單個命令,包括渲染和計算階段; GPUCommandBuffer 傳遞到 GPU 運行隊列。 結果可以在與一個或多個畫布元素關聯的區域中呈現,或者在沒有輸出的情況下進行處理(例如,在運行計算任務時)。 階段的分離使得更容易將資源創建和供應操作分離到可以在不同線程上運行的不同處理程序中。
  • 處理狀態的不同方法。 WebGPU 提供了兩個對象 - GPURenderPipeline 和 GPUComputePipeline,它們允許您組合開發人員預定義的不同狀態,這使得瀏覽器可以不將資源浪費在額外的工作上,例如重新編譯著色器。 支持的狀態包括:著色器、頂點緩衝區和屬性佈局、粘性組佈局、混合、深度和圖案、渲染後輸出格式。
  • 綁定模型,很像 Vulkan 的資源分組工具。 為了將資源分組,WebGPU 提供了一個 GPUBindGroup 對象,在編寫命令時,該對象可以與其他類似對象關聯以在著色器中使用。 創建此類組允許驅動程序提前執行必要的準備操作,並允許瀏覽器更快地更改繪製調用之間的資源綁定。 資源綁定的佈局可以使用 GPUBindGroupLayout 對象進行預定義。

來源: opennet.ru

添加評論