WebGPU 是个好东西,它取代 WebGL 是必然的,属于 WebGPU 的时代即将到来

简介: 7月更文挑战第12天

GPU 是单词 graphics processing unit 的缩写,中文通常会被翻译为:​​图形处理器​​​ 或 ​​图形处理单元​​。
所以 WebGPU 从字面上可以简 单理解为:让浏览器(Web)拥有访问和使用 GPU 的能力。
如何查看自己电脑是否有 GPU ?

  1. 打开系统任务管理器
  2. 点击 性能 面板
  3. 在左侧如果能够找到 GPU 则表示你的电脑有 GPU
  4. 若你的电脑本身就没有 GPU,那你搞不了 WebGPU 了...
    对于 WebGPU 而言,无论是 集成显卡,还是 独显,都是可以的。WebGPU 是一种新的 Web API,可用于在图形处理器(GPU)上执行渲染和计算操作。

WebGL的短板:API 标准太过陈旧
WebGL 最新的版本 2.0 发布于 2017 年,该版本支持的 GPU 标准对应的是 Open ES 3.0,发布于 2012 年,而 Open ES 3.0 桌面端对应的标准为 Open GL 3.2,发布于 2009 年。
2009 年已经是 12 年前了。
在如此陈旧的标准下,根本无法充分利用到当前计算机中的性能优势:多核 CPU + 并行/通用计算 GPU 的优势。

Open GL 归属于 Khronos Group 这个组织,这个组织就没打算继续发展优化 Open ES 和 WebGL,Khronos 目前主要想发展的是另外一套标准:Vulkan,算是 OpenGL 的下一代版本。
有一种阴谋论,说 WebGPU 替代 WebGL 原因之一是因为 WebGL 背后的 Open ES 版权归 Khronos,所以 W3C 组织才希望搞出属于自己的 WebGPU,一派胡言。
WebGL 在渲染性能方面实在是没有跟上时代,这也是为什么 WebGL 网页 3D 实际上并没有大规模流行起来的原因。甚至学习 WebGL、Three.js 都被称为 ​​小众​​。

补充:苹果浏览器 Safari 2021年 9 月才开始支持 WebGL 2.0。
为啥苹果浏览器对 WebGL 2.0 支持度这么晚?因为苹果觉得 WebGL 太慢,于是自己搞了一个 Metal 架构,将 WebGL 2.0 构建在自己的 Metal 架构之下,以便提升 WebGL 的性能。
实际上这个性能的提升是有限的,且仅适用于苹果浏览器,不适用于谷歌浏览器。

天下分久必合 合久必分
在 WebGL 不给力,且提升无望的情况下,各家各自造自己的轮子。
最终 微软、浏览器厂商、芯片厂商、W3C、Khronos 等多方达成共识:放弃 WebGL,开发全新的 Web 图形渲染 API ,就是 WebGPU。
浏览器厂商:苹果浏览器、谷歌浏览器、火狐浏览器等等主流浏览器
芯片厂商:英特尔、AMD等
W3C:万维网联盟,Web 标准的制定者
Khronos:OpenGL / Open ES 的版权方

多方对WebGPU达成的共识:
WebGPU 必须可以同时兼容 D3D12(微软)、Metal(苹果)、Vulkan(Khronos) 这 3 个底层框架。

  1. 相同的 API 和 着色器语言
    WebGL 对应的着色器语言为 GLSL(OpenGL Shading Language)
  2. 减少 CPU 开销
    具体体现在 优化渲染管线
  3. 更好支持 多线程
    WebGL 渲染命令一旦调用,就会立即全局生效,同步执行,所以是单线程。
    而 WebGPU 则将渲染命令拆分成 2 个步骤:录制命令(纯CPU操作) + GPU执行(多线程并行计算)
  4. 支持现代 GPU 架构
  5. 支持 GPU 通用计算
    关于 通用计算,这可能是 WebGPU 会爆发的另外一个点,不仅仅是用作 Web 3D 渲染,还为浏览器提供 GPU 通用计算的能力。
    TensorFlow.js 有可能也会迎来爆发。
    此外 WebGPU 还支持 Shared Memory(共享内存),简单来说可以定义一些变量让不同的进程都可以访问到该变量,极大提升 GPU 计算能力。
    注:共享内存(Shared Memory) 和 全局变量 并不是同一回事。

WebGPU结构体系图:
你的程序(浏览器网页) > WebGPU API > 系统平台(OS) > { DirectX 12、Metal、Vulkan }
图片来源:https://web.dev/gpu/
特别补充:

  1. 上图中的 DirectX 12 就是 ​​D3D12​​ 。
  2. WebGL 适用的是 DirectX 11,也就是 D3D11。

WebGPU通过充分利用GPU并行计算的能力来提升渲染 3D 性能。
关于 “并行计算” 的一个举例说明:
假设现在要计算 8 个数字的和,例如 2 + 4 + 3 + 6 + 8 + 1 + 7 + 9 等于多少,那么:
这里我们假设每 2 个数字求和所需时间为 1 毫秒 (我只是举例)

  1. WebGL 是​​单线​​​计算,它的步骤是:从左到右逐一计算,即 先计算前两个数之和(2 + 4 = 6),然后将计算结果再与第 3 个数字求和(6 + 3 = 9),然后再继续......
    那么这 8 个数字求和一共需要 7 毫秒。2. WebGPU 则采用 ​​并行计算​​​,它的步骤是:将 8 个数字分成 4 组(每组 2 个数),然后这 4 组 分别同时求和,得到 4 个数字,然后将这 4 个数字再拆分成 2 组(每组 2 个数字),再次分别同时求和,将得到的 2 个数字进行最终的求和。
    那么这 8 个数字求和一共需要 3 毫秒。7 毫秒 VS 3 毫秒
    上面使用 8 个数字求和仅仅是举例,实际中 3D 渲染所需的运算量非常大,可想而知性能差异会更大。
    你可以把 WebGL 对应的 CPU 单线计算看作是 1 位拥有超高心算能力的强者。
    而 WebGPU 对应的 GPU 并行计算 则是 1 万名普通人。
    ​​1 位强者​​​ VS ​​1 万个普通人​​ ,强者再强也是没有胜算的。

总之,记住一句话:WebGPU 是个好东西,它取代 WebGL 是必然的,属于 WebGPU 的时代即将到来。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
4月前
|
Rust JavaScript 前端开发
WebAssembly 技术:解锁浏览器的无限潜能
随着互联网的快速发展,Web 应用程序的功能需求也越来越复杂。传统的 JavaScript 语言在处理大规模数据和高性能计算方面存在一些局限性。然而,WebAssembly 技术的出现改变了这一切。本文将介绍什么是 WebAssembly,它的应用领域以及如何使用它来提升 Web 应用程序的性能和体验。
|
7天前
|
UED 开发工具 iOS开发
Uno Platform大揭秘:如何在你的跨平台应用中,巧妙融入第三方库与服务,一键解锁无限可能,让应用功能飙升,用户体验爆棚!
【8月更文挑战第31天】Uno Platform 让开发者能用同一代码库打造 Windows、iOS、Android、macOS 甚至 Web 的多彩应用。本文介绍如何在 Uno Platform 中集成第三方库和服务,如 Mapbox 或 Google Maps 的 .NET SDK,以增强应用功能并提升用户体验。通过 NuGet 安装所需库,并在 XAML 页面中添加相应控件,即可实现地图等功能。尽管 Uno 平台减少了平台差异,但仍需关注版本兼容性和性能问题,确保应用在多平台上表现一致。掌握正确方法,让跨平台应用更出色。
13 0
|
3月前
|
机器学习/深度学习 人工智能 前端开发
WebAssembly:浏览器中的新语言,引领Web性能革命
【6月更文挑战第12天】WebAssembly,简称Wasm,是浏览器中的新语言,旨在带来近乎原生的性能,引领Web性能革命。它具有高效、可移植、安全和多语言支持的特点,适用于游戏开发、图形处理、计算机视觉等领域。随着浏览器支持增强,Wasm将在跨平台应用、AI、机器学习、云计算和边缘计算中发挥更大作用,推动Web应用的发展。
|
4月前
|
编解码 前端开发 JavaScript
前端发展趋势:WebAssembly、PWA 和响应式设计
前端发展趋势:WebAssembly、PWA 和响应式设计
|
4月前
|
vr&ar 开发者 Python
探索未来的现实世界:混合现实(AR)与增强现实(VR)技术的应用Python异步编程:解放性能的重要利器——异步IO库深入解析
在当今科技飞速发展的时代,混合现实(AR)和增强现实(VR)技术正迅速改变着我们对现实世界的认知和体验。本文将介绍这两种技术的基本原理以及它们在不同领域的广泛应用,包括教育、医疗、旅游、娱乐等。混合现实和增强现实技术为我们带来了全新的沉浸式体验,将人与数字世界融合在一起,为未来的现实世界带来无限可能。 在当今信息爆炸的时代,高效的编程方式成为开发者追求的目标。Python异步编程与其强大的异步IO库(例如asyncio)成为了解放性能的重要利器。本文将深入解析Python异步编程以及异步IO库的原理和使用方法,帮助读者进一步掌握这一技术,提升开发效率。
|
JavaScript 前端开发 API
使用three.js与WebGL相比有什么优势?
简单的说Three.js是WebGL的框架。封装和简化了WebGL的方法。three.js在它的基础上进行了进一步的封装和简化开发开发过程,个人认为类似于jQuery对原生js的关系。下面我们一点一点来了解下。
267 0
使用three.js与WebGL相比有什么优势?
|
机器学习/深度学习 存储 API
WebGPT VS WebGPU
到目前为止,GPT4 模型一直是开创性的模型,公众可以免费或通过其商业门户(用于公共测试版)获得。它为许多企业家点燃了新的项目想法和用例,但对参数和模型数量的保密性正在杀死所有押注第一个 1 万亿参数模型到 100 万亿参数声明的爱好者!
150 0
|
Web App开发 测试技术 API
WebGpu VS WebGL
首先是Web 和 WebGPU 上的图形简史.如果您还没有阅读,请阅读 - 这篇文章在很大程度上是从那篇文章开始的。我将介绍WebGPU在实践中与WebGL的比较,我在Web游戏引擎Construct中添加WebGPU支持时学到的东西,以及它对未来的意义。
182 0
|
vr&ar 图形学 Android开发
使用Unity构建增强现实应用程序:从理论到实践
大家好!在今天的博客文章中,我将与大家分享如何使用Unity构建增强现实(AR)应用程序。AR是一项令人兴奋的技术,它将虚拟元素与现实世界相结合,为用户创造出令人难以置信的交互体验。Unity作为一种强大的游戏开发引擎,也可以用于构建AR应用程序,并且提供了丰富的工具和功能来简化开发过程。 在本文中,我们将从理论到实践逐步介绍AR应用程序的构建过程。让我们开始吧!
156 0
|
人工智能 缓存 弹性计算
Orillusion 引擎正式开源!AIGC 时代下的 WebGPU 轻量级 3D 渲染引擎!
Orillusion 引擎正式开源!AIGC 时代下的 WebGPU 轻量级 3D 渲染引擎!
582 0