擷取 WebGPU 生態系統

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

發布日期:2023 年 11 月 9 日,上次更新時間:2025 年 9 月 16 日

WebGPU 通常被視為網頁圖形 API,可透過公開尖端硬體功能,統一且快速存取 GPU,並在 GPU 上執行轉譯和運算作業,類似於 Direct3D 12、Metal 和 Vulkan。

不過,WebGPU 不只是 JavaScript API,更是類似 WebAssembly 的基本建構區塊,由於生態系統蓬勃發展,影響範圍遠遠超出網路。Chrome 團隊認為 WebGPU 不僅是網路技術,更是以核心技術為中心的蓬勃發展生態系統。

探索目前的生態系統

這項技術的發展歷程始於 JavaScript 規格,這是由 Apple、Google、Intel、Mozilla 和 Microsoft 等眾多機構共同努力的成果。所有主要網頁瀏覽器都已實作或正在實作 WebGPU。

同時,Mozilla 和 Google 發現 WebGPU 在平台專屬應用程式中的潛力,因此將 WebGPU 實作項目從瀏覽器中分離出來,讓使用者能獨立使用。

在 Chrome 中,這項功能以 Dawn 的形式實現,這是一個 C/C++ 程式庫,可將 WebGPU 呼叫轉換為 GPU 驅動程式指令。C 和 C++ 應用程式可透過 Dawn 原生使用 WebGPU,並運用瀏覽器供應商的專業知識,提供可攜式且符合人體工學的 GPU 抽象化。

如網誌文章「WebGPU:未來的跨平台圖形 API」所示,將平台專屬的 WebGPU 應用程式移植到網頁非常簡單。C++ WebAssembly 工具鍊 Emscripten 已支援 WebGPU,因此只需稍做修改,即可將其移植到網頁。

您也可以使用 Node.js JavaScript 執行階段,在瀏覽器外執行 JavaScript WebGPU 程式碼,因為該執行階段包含以 Dawn 為基礎的 WebGPU 模組。讓您執行程式碼時,不必修改伺服器端或其他平台專屬環境。

Rust 也有類似的生態系統,那就是 Firefox 實作的 WebGPU wgpu。Wgpu 可直接整合至 Rust 應用程式,然後使用 web-sys 移植到網頁。此外,Deno JavaScript 執行階段也透過 wgpu 支援 WebGPU。請參閱 wgpu 與 Deno 結盟網誌文章。

這會在 Rust 和 C++ 之間建立平行生態系統,如下圖所示。

2023 年的 WebGPU 生態系統圖。
2023 年的 WebGPU 生態系統。

新興領域

WebGPU 生態系統的範圍不只涵蓋 JavaScript、C++ 和 Rust 領域。

您偏好的程式設計語言可能已具備 WebGPU 的繫結,因為開發 WebGPU 實作項目的工程師,也正在開發 WebGPU 的通用 C 標頭。這可用於指定 Dawn、wgpu 等項目,方便使用 C FFI 為語言建立繫結。

Chrome 團隊也考慮將 Dawn 設為所有瀏覽器 UI 元素的預設算繪後端,包括選單、工具列、開發人員工具和網頁內容。這樣一來,您就不必為每個原生 API 分別實作算繪作業,開發程序也會簡化。這項功能目前處於實驗階段,適用於 macOS 和 Windows,且須啟用 chrome://flags/#skia-graphite 標記。