把握 WebGPU 生态系统优势

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

发布时间:2023 年 11 月 9 日;上次更新时间:2025 年 9 月 16 日

WebGPU 通常被视为一种 Web 图形 API,它通过公开尖端硬件功能并支持在 GPU 上执行渲染和计算操作(类似于 Direct3D 12、Metal 和 Vulkan),从而实现对 GPU 的统一快速访问。

不过,WebGPU 不仅仅是一个 JavaScript API;它是一个类似于 WebAssembly 的基本构建块,由于其蓬勃发展的生态系统,其影响远超 Web 范围。Chrome 团队认为,WebGPU 不仅仅是一项 Web 技术,更是一个以核心技术为中心的蓬勃发展的生态系统。

探索当前生态系统

这一历程始于 JavaScript 规范,这是 Apple、Google、Intel、Mozilla 和 Microsoft 等众多组织共同努力的成果。所有主流 Web 浏览器都已实现或正在实现 WebGPU。

与此同时,Mozilla 和 Google 认识到 WebGPU 在特定于平台的应用中的潜力,并将 WebGPU 实现与浏览器分离,从而实现独立使用。

对于 Chrome,这体现为 Dawn,这是一个将 WebGPU 调用转换为 GPU 驱动程序命令的 C/C++ 库。Dawn 使 C 和 C++ 应用能够原生使用 WebGPU,利用浏览器供应商的专业知识提供便携式且符合人体工程学的 GPU 抽象。

正如博文 WebGPU:未来的跨平台图形 API 中所展示的那样,将特定于平台的 WebGPU 应用移植到 Web 非常简单。C++ WebAssembly 工具链 Emscripten 已经支持 WebGPU,只需进行极少的修改即可将其移植到 Web。

您还可以使用 Node.js JavaScript 运行时在浏览器外部运行 JavaScript WebGPU 代码,因为该运行时包含基于 Dawn 的 WebGPU 模块。它让您无需修改代码即可在服务器端或其他特定于平台的上下文中运行代码。

Rust 也有类似的生态系统,即 Firefox 的 WebGPU 实现 wgpu。Wgpu 可以直接集成到 Rust 应用中,然后使用 web-sys 将其移植到 Web。此外,Deno JavaScript 运行时通过 wgpu 支持 WebGPU。请参阅与 Deno 结盟的 wgpu 博文。

这样一来,Rust 和 C++ 之间便会建立一个并行生态系统,如下图所示。

2023 年 WebGPU 生态系统示意图。
2023 年的 WebGPU 生态系统。

新兴领域

WebGPU 生态系统不仅限于 JavaScript、C++ 和 Rust 领域。

您偏好的编程语言可能已经有 WebGPU 的绑定,因为从事 WebGPU 实现工作的工程师也在开发 WebGPU 的通用 C 标头。这可用于以 Dawn、wgpu 和其他对象为目标,从而简化使用 C FFI 的语言的绑定创建。

Chrome 团队还在考虑将 Dawn 用作所有浏览器界面元素(包括菜单、工具栏、开发者工具和 Web 内容)的默认渲染后端。这样一来,便无需为每个原生 API 单独实现渲染,从而简化开发流程。此功能在 macOS 和 Windows 上处于实验阶段,可通过 chrome://flags/#skia-graphite 标志启用。