WebGPU 是 2023 年 Web 的未来!

WebGPU 为 Web 平台上的高级图形和高性能计算提供了无限可能 。尽管目前浏览器支持仍然有限,但 WebGPU 在如今是非常值得探索的,并且在未来只会变得更加强大和广泛支持 。

WebGPU 是 2023 年 Web 的未来!

文章插图
WebGPU 是用于 Web 的下一代图形和计算 API 。它提供对现代 GPU 的基础访问,从而在 Web 平台上实现高性能 3D 图形、图像处理和通用计算 。经过多年的开发和测试,WebGPU 已经到了推荐阶段,可以被主流浏览器采用 。谷歌宣布 Chrome 从版本 113 开始提供 WebGPU 支持,从而在 ChromeOS、windows 和 macOS 设备上实现惊人的视觉效果和复杂的计算 。
WebGPU 为 Web 开发开辟了很多新的可能性 。它可以为身临其境的虚拟世界、交互式数据可视化、高级图像和视频编辑、物理模拟、机器学习等提供支持——所有这些都在浏览器中运行 。WebGPU 还支持围绕 web 3、隐私和安全性的新用例,这在以前是不可行的 。
Web 平台继续突破在线可能性的界限 。借助 WebGPU 和 WebXR、WebTransport 和 WebCodecs 等相关标准,未来的 Web 将比以往任何时候都更加强大和开放 。虽然这仍是一项新兴技术,但 WebGPU 展示了开放 Web 上图形和计算的广阔前景 。
WebGPU 提供基础 API,需要了解图形编程和 GPU 架构才能有效使用 。然而,在库、工具和资源的帮助下,Web 开发人员可以使用 WebGPU 。Babylon.js、Three.js、TensorFlow.js 和 Filament 等 WebGPU 采纳者展示了如何将 WebGPU 包装到更高级别的框架中,以构建交互式 3D 场景、运行机器学习模型等 。
WebGPU 的历史WebGPU 的诞生源于对更现代和高效的 Web 图形 API 的需求,以取代基于 OpenGL API 家族的 WebGL 。WebGL 在网页上实现了许多令人惊叹的体验,例如 google 地球、交互式音乐视频、3D 房地产漫游等,但它也存在一些限制和挑战,例如:
  • 缺乏对新 GPU 功能的支持,如计算着色器、光线追踪、可变速率着色等 。由
  • 于需要验证每个 API 调用并在 CPU 和 GPU 内存之间复制数据,因此具有高 CPU 开销和内存使用量 。
  • 由于 OpenGL 在不同的浏览器和平台上的支持和优化不同,导致性能和行为不一致 。
2016 年,谷歌向 WebGL 工作组展示了一个 PPT,探讨了构建一个最终取代 WebGL 的新 API 的基本思想和原则,又名“WebGL Next” 。该演示文稿提出了一个低级 API,它将公开现代 GPU 的底层功能,例如命令缓冲区、管道、描述符等 。API 也将是显式的,这意味着开发人员将对 GPU 资源的使用方式有更多的控制权 管理和同步 。
2017 年,Apple 的 WebKit 团队提议创建 W3C 社区组来设计 API 。同时,他们基于 Apple Metal 中的概念,宣布了一项名为“WebGPU”的概念和提案的技术证明 。WebGPU 名称后来被社区采纳为未来标准名称 。最初的提案已重命名为“WebMetal”以避免进一步混淆 。
W3C 社区小组开始着手定义 WebGPU 规范和 API,Mozilla、Apple、Intel 和 Microsoft 等主要公司都做出了贡献 。该小组还收到了 Web 开发人员和行业专家的反馈 。目标是创建一个 API:
  • 安全:API 应防止常见错误,如内存泄漏、数据竞争或无效操作等,这些错误可能会导致崩溃或安全问题 。
  • 可移植:API 应该在不同的浏览器和平台上一致地工作,而不需要特定于供应商的扩展或解决方法 。
  • 表现力:API 应允许开发人员充分利用现代 GPU 的潜力,而不影响性能或灵活性 。
Chromium 团队于 2017 年初展示了名为 NXT 的第一个概念原型 。NXT 实现了一个新的 API,它可以在带有 OpenGL 的 Chromium 中运行,或者与 OpenGL 和 Metal 独立运行 。NXT 借鉴了所有 Vulkan、Direct3D 12 和 Metal 原生 API 的概念 。
2020 年,WebGPU 进入第一个公共工作草案阶段,这意味着该规范足够稳定,可以接受公众审查和反馈 。该规范定义了 JAVAScript API 和基于 SPIR-V 的 WebGPU 着色语言 (WGSL),旨在与现有的着色语言(如 HLSL 和 GLSL)兼容 。
在2021年,WebGPU 达到了候选推荐阶段,这意味着规范已经可以进行实现测试和互操作性评估 。规范还定义了一些可选特性,这些特性可以根据浏览器的平台支持进行启用,例如深度钳位、各向异性滤波、纹理压缩 BC 等 。
2023 年,WebGPU 进入提议推荐阶段,这意味着该规范已准备好接受 W3C 主席的认可 。该规范还定义了一些实验性功能,浏览器可以在标志或前缀下启用这些功能,例如光线追踪或可变速率着色 。


推荐阅读