打开网易新闻 查看精彩图片

一、序言

这是一段关于浏览器与3D的 "进化简史",也是一个关于如何让虚拟世界在指尖流动的漫长故事。

曾几何时,要在那个方寸之间的浏览器窗口中构建一个立体的、交互的、沉浸的数字世界,近乎是一种奢望。开发者们不得不依赖各种脆弱的插件,在性能的悬崖边舞蹈,或是在一个背负着沉重历史包袱的图形接口上艰难求索。从惊艳一时却终将消逝的Flash黄金时代,到为浏览器真正 "点亮"3D却力不从心的WebGL,我们见证的不仅仅是技术的迭代,更是一场为争夺 "下一代互联网体验" 的基础设施之战。

这背后,是芯片算力的狂飙突进,是移动互联网对随时随地沉浸体验的渴望,更是人类永不满足的想象力:渴望在网页中直接触摸逼真的三维设计,进行复杂的科学模拟,甚至运行庞大的人工智能模型。浏览器,这个我们最熟悉的互联网入口,必须变得更强。

而这一切的转折点,始于2017年一次破釜沉舟的会议,一个名为WebGPU的大胆构想被正式提出。它不再是对过去的修补,而是一次面向未来的彻底重构。今天,当我们回顾这段从构想到无处不在的八年征程,看到的是一部技术标准的协奏曲,一次产业力量的罕见对齐,以及一个属于 Web 的全新立体时代的真正黎明。

现在,就让我们回到起点,穿越时光,重温浏览器3D能力从无到有、从有到强的波澜壮阔之路。

二、Flash时期

2008 年之前,浏览器曾经拥有过一段短暂而绚烂的 "3D黄金时代",实现方案主要依靠Adobe Flash。在这前后,涌现了一大批诸如Papervision3D、Away3D和Sandy 3D等在内的优秀开源 Flash 3D 引擎横空出世。

2009 年至 2011 年,Flash Player 11 引入了Stage3D,提供接近 DirectX 9 / OpenGL ES 2.0的低级GPU API,部分3D游戏引擎巨头,比如Unity 3D、Unreal Engine 3都曾推出Flash导出插件

在 Flash 最辉煌时期,浏览器中充斥着大量基于Flash的动画视频、3D游戏与交互广告等等。2011 年左右,全球约98%的桌面浏览器都装有Flash。

不过,Flash也有严重的短板,主要依靠CPU运行,而不是显卡,这导致渲染3D极为耗资源,遇到稍微复杂一点的3D应用,CPU经常处于接近满载的状态。在PC上,这个问题还勉强可以接受,但是到了2010年移动互联网开始普及的阶段,这个短板就非常突出了。

如果在移动设备上采用 Flash 3D 方案,存在以下三个严重的负面后果:1、卡顿,因为移动设备的性能肯定不如 PC,Flash 3D 内容在 PC 上运行都很吃力。2、导致设备发热,影响续航,因为移动设备主要采用电池供电。3、安全问题,Flash 高危漏洞频发。

正是基于这种情况,乔布斯坚决拒绝了在苹果移动生态中采用 Flash,从此 Flash 光环不再,开始走下坡路,逐步退出了历史的舞台。

三、2011–2016:WebGL 时代的艰难曙光

Flash 倒下的同一年,Web 迎来了真正的原生希望 WebGL,该方案直接在浏览器中运行,无需安装任何第三方插件。

2011 年 3 月,WebGL 1.0 正式发布(基于 OpenGL ES 2.0),2014 年,Google Maps 全面切换到 WebGL 渲染,2015–2016年,Three.js、Babylon.js、PlayCanvas 等现代 Web 3D 引擎崛起,2017 年,WebGL 2.0(基于 OpenGL ES 3.0)正式发布。

尽管如此,WebGL 从诞生之日起就背负着沉重的历史包袱,也有很多问题和短板:

1、设计过于保守,为了兼容2010年的手机GPU,只能基于早已过时的 OpenGL ES。2、缺少计算着色器(Compute Shader),无法实现真正的GPGPU。3、驱动兼容性噩梦,尤其是 Windows 上的 ANGLE 层导致无数黑屏与性能陷阱。4、状态机设计导致性能极度不可预测,比如会出现同样的代码在这台电脑可实现 200 FPS,在另一台只能达到 15 FPS 的情况。

因此,整体而言,WebGL 的情况也非常尴尬,虽然让浏览器重新拥有了 3D,却始终停留在 "勉强能跑,很不理想" 的尴尬境地,WebGL 只是让浏览器 "勉强跟得上 2010 年的手机",却永远追不上 2020 年的桌面 GPU。

四、2017 年:历史在沉默中转型

正是 WebGL 2.0 发布的那一年,几个浏览器工程师在会议室里做出了一个大胆决定:"我们不能再修修补补了,应该直接跳到Vulkan、Metal、DX12的时代,我们要让浏览器拥有真正的现代 GPU,而不是永远活在十年前。"

至此,WebGPU 的故事正式开始了。

打开网易新闻 查看精彩图片

五、WebGPU发展史

2017年1月,苹果工程师Dean Jackson 在 BlinkOn大会上首次公开提出了 "NVIDIA-style low-level API for the Web" 的概念。

2017年2月,Google Chrome 团队在 W3C GPU for the Web Community Group 中正式提交了 WebGPU 最初提案。其目标非常明确:彻底取代 WebGL 1.0/2.0,设计一个建立在 Vulkan、Metal、DX12之上的现代、低开销和跨平台GPU API,并支持图形渲染和通用GPU计算(Compute)

1、2018–2019 年:三大原型诞生,方向开始分化

苹果团队开发了 WebMetal(仅 Safari 内部实验),Google 推出 Dawn(C++ 实现的 Vulkan/Metal/DX12 跨平台层),Mozilla 开发wgpu(Rust 实现的 WebGPU 实现)。

2、Chrome 113首次支持

2021 年 3 月 1 日是历史性一刻,Chrome 113 首次在实验标志后启用WebGPU,Chrome成为第一个支持WebGPU的主流浏览器,但该功能不是默认开启的,需要用户手动开启。

同年,WebGPU 正式进入 W3C First Public Working Draft 阶段

3、2022 年:三大引擎全部站队

Firefox Nightly 开启 WebGPU 支持(基于 wgpu),Safari Technology Preview 加入实验性支持,三家浏览器厂商首次在同一张时间表上同步推进。

4、2023年:真正可用的一年

2023 年 4 月,Chrome 113 正式稳定版默认启用 WebGPU(全球第一个)。2023 年 8 月,WebGPU + WGSL 正式成为 W3C 推荐标准(REC)。同年,Three.js、Babylon.js、PlayCanvas 等主流 Web3D 引擎发布 WebGPU 渲染器。

5、2024 年:生态爆发与最后堡垒倒下

Firefox 127(2024 年 6 月)正式默认启用 WebGPU,Safari 18(2024 年 9 月,随 macOS Sequoia /iOS 18发布)在macOS 和iOS上默认开启WebGPU,微软Edge随Chrome节奏同步开启。

6、2025 年:全面胜利,无处不在

2025 年 6 月,Chrome Android 正式默认开启WebGPU,2025年9月,Safari 19将WebGPU扩展到visionOS,即Apple Vision Pro原生支持。

2025年11月,WebGPU在以下平台全部默认开启,无需用户进行任何手动操作,主要涵盖以下类别:

A、Chrome / Edge:Windows、macOS、Linux、ChromeOS、Android;;

B、Firefox:Windows、macOS、Linux、Android(进行中);

C、Safari:macOS、iOS、iPaOS、visionOS。

至此,3D 应用开发者第一次可以只写一套WebGPU代码,就覆盖全球95%以上的桌面与移动浏览器。

打开网易新闻 查看精彩图片

六、笔者总结

从 2017 年一个激进的想法,到 2025 年成为浏览器标配,WebGPU用8年时间完成了WebGL从 2006 年提出到 2011 年普及花了5年却依然局限的全部使命。

它不再是 "WebGL 的升级版",而是第一个真正现代的、计算统一的、跨所有浏览器引擎的GPU 接口;第一个让浏览器原生性能接近桌面应用的图形与计算API;第一个让 "在浏览器里跑大模型"、"在浏览器里玩3A游戏" 等愿望从梦想变成了可能,因此意义非凡。

目前,各大主流浏览器对WebGPU的技术支持已经全部实现,预计在未来数年,各种基于WebGPU技术的3D应用或内容将呈井喷之势,全面普及,永远相信美好的事情即将发生。