WebGPU 是 WebGL 的后继者。它仍然是一项前沿技术,并且默认情况下在所有浏览器中都处于关闭状态(如果有的话)。该 API 非常不稳定,因为它会随着每个浏览器的发布而不断变化。
我最初的想法是这样的:
- WebGL 缺少什么?
- 什么是 WebGPU?
- 为什么它更好?
在本文中,我想回答这些问题,并讨论:
- WebGL 的历史。
- 网络图形的未来。
WebGL 的历史
2009 年,一个名为Khronos 集团的非营利组织成立了一个 WebGL 工作组,Apple、Google、Mozilla 和 Opera 的代表也参与其中。WebGL 的目的是在浏览器上支持原生 3D 功能。顾名思义,它在 Web 上运行并使用OpenGL作为其 API。WebGL初始原型背后的策划者Vladimir Vukićević之所以以 OpenGL 为目标,是因为 Web 生态系统之外已经有 OpenGL 开发人员,找到他们相对容易。他还声称“Web 不擅长采用大型规范”,因此他的目标是一些熟悉的东西。
请注意,WebGL 不一定在 OpenGL 上运行,它实际上因平台而异。在 Linux / MacOS 上,它在 OpenGL 上运行,在 Windows 上,它在DirectX上运行。在 Edge 上,WebGL 内容将转换为 DirectX 等效项以显示它;WebGL 渲染器将 WebGL 调用转换为 DirectX 等效项,而转译器将 GLSL 着色器转换为 HLSL 着色器(GPU 内容)。ANGLE项目(在 Chrome 和 Firefox 中使用)具有类似的功能。有关更多信息,请参阅Microsoft 的博客文章。
关于 Flash 的思考(史蒂夫·乔布斯)
有一段时间,人们一直在争论是否应该继续使用 Flash 还是 WebGL。许多网站都在使用 Flash;它很可靠,但需要安装外部插件,而且不是 Web 原生的。从某种意义上说,它也赋予了 Adobe 所有的权力,因为它不是基于开放规范的。2010 年,史蒂夫·乔布斯发表了一封公开信,名为“对 Flash 的看法”。简而言之:他非常反对 Flash,绝对不愿意在任何 Apple 设备上支持它。这封信有好几页,但乔布斯知道我要写这篇文章,并提前准备了一个结论声明(讽刺):
结论。
Flash 诞生于 PC 时代,用于 PC 和鼠标。Flash 是 Adobe 的一项成功业务,我们可以理解他们为何希望将其推广到 PC 以外的领域。但移动时代涉及低功耗设备、触摸界面和开放网络标准,而 Flash 在这些方面都存在不足。
大量媒体纷纷为苹果移动设备提供内容,这表明 Flash 不再是观看视频或消费任何网络内容的必需品。而苹果应用商店中的 25 万个应用程序证明,对于数以万计的开发人员来说,Flash 并不是创建图形丰富的应用程序(包括游戏)的必需品。
HTML5 等移动时代创造的新开放标准将在移动设备(以及 PC)上大获成功。也许 Adobe 应该更多地专注于为未来打造出色的 HTML5 工具,而不是批评 Apple 抛弃了过去。
史蒂夫乔布斯
2010 年 4 月
仅这封信就可能改变整个网络图形生态系统。快进到 2020 年 12 月 31 日,Adobe 彻底放弃了对 Flash 的支持。
哪里出了问题?
我认为,早在 2006 年 Vladimir 采用 OpenGL 规范时,他的初衷是好的。OpenGL 不特定于平台,听起来像是一个可行的选择,因为它可以在任何平台上使用,而不像其竞争对手 DirectX。然而,事情并没有像预期的那样发展。
我想让你们读一读Khronos 小组活跃成员Dzmitry Malyshau 的个人博客中的一段引言:
桌面和移动设备上的 OpenGL 驱动程序都很差。这就像狂野西部:充满了错误和隐藏的秘密,关于如何说服驱动程序不要做错事。大多数游戏都以 Windows 为目标,在某些时候,D3D10+ 远远领先于 OpenGL,无论是它向开发人员呈现的模型,还是驱动程序的质量。今天,Windows 上的 Web 浏览器不运行在 OpenGL 上,即使它们接受 WebGL API,Firefox 在 OpenGL 上有 WebRender,Chromium 有 SkiaGL。它们都在 Angle 上运行,Angle 将 OpenGL 转换为 D3D11。
简单来说,游戏开发者实际上将 DirectX 视为比 OpenGL 更可行的选择。WebGL 从未打算使用 DirectX 的 API,而且出于一个好的理由,它不会向任何公司推广独占性。这让 WebGL 处于劣势。它不仅速度较慢,而且还不知道如何运行 DirectX 代码。
介绍 — Vulkan (又名 OpenGL Next)
2013 年,AMD与DICE合作开发了一个名为Mantle 的低级渲染 API ,旨在替代 DirectX 和 OpenGL。该实现后来于 2016 年捐赠给 Khronos 集团,目的是为 Khronos 提供一个基础,以便开始开发他们可以在整个行业中标准化的低级 API。Khronos 开始研究一种新的 API,它源自并建立在 AMD 的 Mantle API 的组件之上,并将其命名为Vulkan。随后成立了一个名为“Vulkan Portability”的小组,旨在将 Vulkan 置于 DirectX 12 和Metal(Apple 版本的 DirectX)之上。
与 OpenGL、DirectX 11 和 Metal 相比,Vulkan 旨在提供更高的性能和更均衡的 CPU/GPU 使用率。与 DirectX 11 和 OpenGL 的其他主要区别在于,Vulkan 是一个相当低级的 API,并提供并行任务。除了较低的 CPU 使用率外,Vulkan 还旨在让开发人员更好地在多个 CPU 核心之间分配工作。
WebGPU 来帮忙
这就是一切的关键所在。WebGPU 将基于 Vulkan,这将带来更高的性能,并使其成为原生生态系统不可分割的一部分,因为 Vulkan 拥有标准化的 API。WebGPU 仍处于非常早期的开发阶段,但它是一个巨大的垫脚石。WebGPU 的实现状态可以在gpuweb 的 Github repo中看到。
作为参考,我准备了一些图表,从以下方面比较 OpenGL 和 Vulkan:CPU 负载、GPU 负载和 FPS。这些是您应该期望在 WebGPU 上看到的改进:
很容易看出 Vulkan 在 CPU 成本更低的情况下实现了巨大的性能提升。
网络图形的未来
与 Unity 并驾齐驱的最流行的游戏开发引擎之一虚幻引擎 4 可能会再次在网络上可用。从虚幻引擎 4.24(2019 年 5 月 31 日)开始,对 HTML5 平台的支持已从引擎中迁移出来。这确实告诉我们,WebGL 的潜力已达到顶峰,我们不会看到它有什么新东西。
游戏和图形密集型软件的开发预计将变得更加便宜,并且可以在更多平台上使用——Linux、Mac、SteamOS、XBOX、Playstation、Android、iPhone、Windows,当然还有 Web。Windows 将不再具有独占性。
WebGPU 有可能成为业余开发者、学生、独立专业人士、移动游戏工作室和许多其他群体的首选。如果它能够兑现其安全性、性能和可移植性的承诺,它可能会成为默认的 GPU API 。如果你和我一样是一名开发者,希望学习一些能在未来长期持续下去的新东西——WebGPU 可能是你的正确选择。
如果能让你感觉好一点的话,这里有一张完整渲染的茶壶的图片:
RA/SD 衍生者AI训练营。发布者:chris,转载请注明出处:https://www.shxcj.com/archives/6157