WebGPU 的後續發展

François Beaufort
François Beaufort
Corentin Wallez
Corentin Wallez

發布日期:2024 年 11 月 21 日

WebGPU 規格會持續更新,Google、Mozilla、Apple、Intel 和 Microsoft 等主要公司每週都會開會討論其開發進度。在最近的網路工作小組會議中,我們簡要介紹了 WebGPU 下一個版本的主要目標和功能。本篇網誌文章將探討會議中的一些重要重點。

達到候選推薦狀態

會議的主要焦點是討論里程碑 0的進度,並確定在達到 W3C 候選推薦狀態前,需要解決哪些問題。這是標準化程序的下一個步驟,可提供更強大的穩定性和智慧財產保護。

會議參與者普遍認為這些問題並非阻礙因素,且可以及時解決,為 W3C 的 WebGPU 候選推薦標準鋪路。

優先開發新功能

會議參與者也將新功能列為優先。他們首先收集了一系列功能要求,這些要求是從開發人員、導入者和利益相關者提供的意見中彙整而來。

白板上有手寫的電腦圖形 API 相關術語清單,包括「Bindless」、「Subgroups」、「MDI」、「Push Constants」、「UMA」、「Subgroup Matrix」和其他術語。

經過討論後,我們找出了下列 AI 專用的 WebGPU 主要功能:

  • 子群組和子群組矩陣:讓應用程式在 GPU 執行緒之間使用快速的本機通訊,並充分利用著色器核心旁的固定大小矩陣相乘硬體。請參閱子群組提案

  • 像素緩衝區:提供更有效率的方式,以可移植的方式儲存及存取小型資料類型,例如 16 位元或 8 位元值。這對某些機器學習圖像處理演算法而言十分重要。請參閱像素緩衝區幻燈片

  • UMA 緩衝區對應:減少或消除複製和同步處理的額外負擔,藉此提升資料上傳效能。請參閱規格問題 2388

我們也正在考慮並優先考量下列 WebGPU 功能,以便解鎖新類型的算繪演算法:

  • 無綁定:這項備受期待的功能提案是大多數先進算繪演算法的必要條件,因為這些演算法需要全場景資訊。與目前相對嚴格的限制相比,Bindless 可讓著色器使用無限數量的資源 (包括紋理)。

  • 多重繪製間接:讓 GPU 上的先前運算建立多個繪製作業,而非先前使用 drawIndirect 時的單一繪製作業。這項功能對於 GPU 驅動的轉譯作業 (例如 GPU 剔除物件) 相當重要。請參閱提取要求 2315

  • 64 位元原子:無論是在緩衝區或紋理中,都必須在 GPU 上執行「軟體算繪」,方法是在單一 atomicMax 作業中,將深度測試和 32 位元酬載捆綁在一起。請參閱問題 4329

為了強化 WebGPU 的功能,並與更廣泛的網路平台整合,我們討論了下列 WebGPU 功能:

  • 相容性模式:這個模式旨在讓 WebGPU 在更多裝置上執行,包括僅支援 OpenGL ES 3.1 的裝置。請參閱相容模式提案

  • WebXR:為每個圖層類型提供 WebGPU 交換鏈,讓現有的 WebXR Layers 模組與 WebGPU 介面連結。請參閱 WebGPU/WebXR 整合簡報

  • Canvas2D:在 Canvas 2D 和 WebGPU 之間建立更佳的互通性,解決效能和人體工學問題。這個 WebGPU 轉移提案可讓您在 WebGPU 中存取文字和路徑繪圖,並將 WebGPU 算繪套用至 Canvas 2D。

會議中也針對改善 WGSL 工具和程式庫的努力,進行簡報和討論。其中一個值得注意的計畫是開發 WESL (WGSL Extended Shading Language),其目標是為 WGSL 提供由社群驅動的擴充功能。

如需更多資訊,請參閱原始會議記錄

想法

這場會議強調了 WebGPU 工作小組、開發人員和更廣泛的圖像社群之間的合作,對於塑造 WebGPU 未來的重要性。工作小組正積極尋求對提案功能的意見回饋,並致力與開發人員合作,確保 WebGPU 滿足他們的需求。

WebGPU 的後續進化版本將是重大的進步,為網路圖像開啟新的可能性,並讓開發人員能夠打造更具吸引力和互動性的 AI 網路體驗。