El W3C揭幕 最近, WebGPU和WebGPU著色語言規範的初稿 (WGSL),它定義了用於執行GPU操作(例如渲染和計算)的API,以及用於編寫GPU端程序的著色器語言。
這些規格 在概念上類似於Vulkan,Metal和Direct3D 12 API。 規範是由一個工作組準備的,該工作組包括Mozilla,Google,Apple和Microsoft的工程師。
用於Web工作組的GPU的目標是在Web平台與本機系統平台中提供的現代3D圖形和計算功能之間提供接口。 了解有關目標,範圍和可交付成果的更多信息。
Web社區組GPU制定了該工作組採用的規範。 社區小組繼續推動有關規範的技術工作並開發新功能。 該工作組與社區組一起制定建議途徑的規範。
從概念上講 WebGPU與WebGL的不同之處在於 圖形API Vulkan與OpenGL不同,但它不是基於特定的圖形API,而是通用層,它使用與Vulkan,Metal和Direct3D中相同的低級基元。
WebGPU為JavaScript應用程序提供了用於底層控制的工具關於組織, 處理命令並將其傳輸到GPU,管理相關的資源,內存,緩衝區,紋理對象和已編譯的圖形著色器。 通過這種方法,您可以減少開銷並提高GPU效率,從而為圖形應用程序實現更高的性能。
網絡GPU 允許您為網絡創建複雜的3D項目 不能以與直接訪問Vulkan,Metal或Direct3D的獨立程序相同的方式工作,但不受特定平台的束縛。
網絡GPU 還提供了移植本地圖形程序的附加功能 通過在WebAssembly中進行編譯,將其轉換為基於Web的表單。 除了3D圖形外,WebGPU還涵蓋了將計算外包給GPU端和運行著色器的可能性。
WebGPU的主要功能:
- 單獨的資源管理,準備工作以及將命令傳輸到GPU(在WebGL中,一個對象同時負責所有事情)。 提供了三個單獨的上下文:GPUDevice,用於創建紋理和圖章之類的資源; GPUCommandEncoder對單個命令進行編碼,包括處理和計算階段; GPUCommandBuffer排隊等待在GPU上執行。 可以在與一個或多個畫布關聯的區域中渲染結果,也可以不渲染而渲染結果(例如,在運行計算任務時)。 通過分段,可以輕鬆地在可以在不同線程上運行的不同控制器上分離資源創建和準備操作。
- 處理狀態的另一種方法s。 WebGPU 提供兩個對象GPURenderPipeline和GPUComputePipeline,那你 允許組合開發人員預定義的不同狀態,這樣瀏覽器就不會浪費資源進行其他工作,例如重建著色器。 支持的狀態包括著色器,頂點緩衝區和屬性佈局,附加的組佈局,合併,深度和模板,以及後處理輸出格式。
- 綁定模型非常類似於Vulkan資源池工具。 為了將資源分組,WebGPU提供了一個GPUBindGroup對象,該對像在鍵入命令時可以鏈接到相同類型的其他對象,以用於著色器中。 此類組的創建允許驅動程序提前採取必要的準備操作,而瀏覽器允許瀏覽器在繪製調用之間更快地更改資源綁定。 可以使用GPUBindGroupLayout對象預定義資源鏈接的佈局。
最後, 如果您有興趣了解更多信息 關於筆記,您可以查看詳細信息在以下鏈接中。