發布有關集成WebGPU幫助規範的信息 在Firefox的每晚版本中,現在 提供用於3D圖形處理的編程接口 在GPU端進行計算,在概念上類似於Vulkan API,metal和Direct3D12。該規範由Mozilla,Google,Apple,Microsoft和由W3C組織創建的工作組的社區代表開發。
WebGPU的主要目標是創建一個安全,方便,便攜式和高性能的軟件界面 可以在具有3D圖形技術的Web平台上使用,並具有現代系統圖形API提供的功能,例如Windows上的Direct3D 12,macOS上的Metal和Linux上的Vulkan。
從概念上講 WebGPU與WebGL的區別與Vulkan與OpenGL的區別相同 而且它不是基於特定的圖形API,而是通用層,通常使用Vulkan,Metal和Direct3D中可用的相同低級基元。
在Firefox中,提供了“ dom.webgpu.enabled”設置以啟用WebGPU 在約:配置。 除了渲染CanvasContext之外,它還需要包含WebRender合成系統(about:config中的“ gfx.webrender.all”)。
WebGPU實現基於用Rust編寫的wgpu項目代碼,並且可以在Linux,Android,Windows和macOS上的DX12,Vulkan和Metal API之上工作(正在開發DX11和OpenGL ES 3.0支持)。
關於WebGPU
網絡GPU 為JavaScript應用程序提供用於底層控制的工具 關於組織, 處理命令並將其傳輸到GPU, 管理相關資源,內存,緩衝區,紋理對象和已編譯的圖形著色器。 這種方法將 支持更高性能的圖形應用 通過減少開銷並提高使用GPU的效率。
網絡GPU 可以為網絡創建完整的複雜3D項目 這些程序的性能不會比直接與Vulkan,Metal或Direct3D通信但與特定平台無關的獨立程序差。
還 通過移植本機圖形程序提供附加功能 可以基於網絡技術運行的形式 通過使用WebAssembly技術。
除了3D圖形之外, WebGPU還涵蓋了與消除GPU旁的計算相關的可能性 並支持著色器開發。 可以使用WebGPU著色器語言創建著色器或以SPIR-V中間格式指定著色器,然後將其翻譯為當前驅動程序支持的著色器語言。
網絡GPU 使用單獨的資源管理,準備工作和命令傳輸 到GPU(在WebGL中,一個對象同時負責所有事情)。 提供了三個單獨的上下文:GPUDevice,用於創建紋理和緩衝區等資源; GPUCommandEncoder對單個命令進行編碼,包括渲染和計算階段; GPUCommandBuffer排隊等待在GPU上執行。
WebGPU和WebGL之間的第二個區別是處理狀態的不同方法。 WebGPU中提出了兩個對象:GPURenderPipeline和GPUComputePipeline,它們允許組合開發人員預定義的幾種狀態,這使瀏覽器不會在其他工作上浪費資源,例如重新編譯著色器。 支持的狀態包括:著色器,頂點緩衝區和屬性佈局,附加的組佈局,混合,深度和圖案,渲染後輸出格式。
WebGPU的第三個功能是綁定模型,這在很多方面 類似於匯集Vulkan中存在的資源的方法。 為了將資源分組,WebGPU提供了一個GPUBindGroup對象,該對象可以通過鍵入命令與其他類似對象關聯以在著色器中使用。
通過創建此類組,驅動程序可以提前執行必要的準備操作,而瀏覽器則可以更快地在拉動調用之間切換資源鏈接。
來源: https://hacks.mozilla.org/