Web or Native 谁才是元宇宙的未来(上)?
随着元宇宙概念的爆炸式出现,3D 渲染技术再次受到了巨大关注度。
沉浸、3D 世界、虚拟社交、虚拟购物,这些都是元宇宙的概念实例。就像电影《失控玩家》那样,人们畅想通过 AR/VR 以及其他互联网技术,把现实世界的楼房街道、天气温度、人际关系等投射到虚拟世界,构建“元宇宙”,拥有一个网络分身。
但目前来看,要想实现这一构想,开发者们还有很长一段路要走。毕竟“元宇宙”的背后是庞大的 3D 虚拟世界构建,需要海量且高质量的 3D 内容支撑,以还原真实世界。R 星引擎的游戏《荒野大镖客》除了游戏世界里各种各样让人拍案叫绝的细节之外,在画质上 3D 世界渲染的技术细节也仍然让人惊叹。
《荒野大镖客 2》
3D 渲染技术的迭代路线分成了两种技术方案:Native 和 Web。
Native,是我们的电脑、手机等硬件设备,通过安装本地的应用程序 APP,直接通过图形 API 和相关驱动调用显卡的计算和渲染能力,完成真实物体的 3D 渲染数字化的过程。
Web,是通过浏览器,在网页页面中,实现现实世界的数字化渲染的过程。
打趣的说,选择 Native 技术栈还是 Web 技术栈,这是一个哲学问题。两种技术方案都有自己的优势和劣势,同时双方的生态也都比较丰富,很多项目从最终的技术实现角度来说,选择哪一条路线都可以完成。
Native 3D 渲染的发展
1992 年,Khronos 制定了第一代的渲染引擎的图形学的框架叫做 OpenGL 1.0,包括现在很多电脑用的基本上 3D 应用都是基于 OpenGL。OpenGL 也在不停的发展,目前最新版是 2017 年发布的 OpenGL 4.6 版本。同时,也出现了专门为移动端设计的 OpenGL ES 版本。由于 OpenGL 是开源和跨平台的,不方便为 Windows 做优化,1996 年,微软作为第一大操作系统的提供商,发布了自己的图形 API Direct3D。DX5/DX6/DX9 有很多游戏的代表作,《古墓丽影》《极品飞车》都是当时的作品。
发展到了 2009 年,微软提出了 DX11 版本,有一个比较大的特性,计算着色器。简单说就是在图形的渲染能力上,可以更加充分的调用显卡的并行计算能力。
2014 年,微软发布了下一代图形渲染 API DX12,同年 6 月份,苹果在 WWDC 大会上发布了自己的图形学 API Metal。2015 年,Khronos 发布了 Vulkan。最早是发布的 OpenGL,随着显卡能力的提升,OpenGL 的全局状态机设计离线,已经无法调用和优化先进现代显卡的能力。可以说 Khronos 不在会全力以赴的长期升级和维护 OpenGL,反而选择发布了全新架构的现代图形 API,即 Vulkan。
2014 年这个节点,就形成了三种现代图形学 API 并驾齐驱的情况。目前所有电脑上的游戏,或者一些 3D 应用,包括 CG 渲染动画,为了达到最好的渲染效果,几乎都会采用这三种现代图形 API。
Web 3D 渲染的发展
总体来说,在 Web 上渲染 3D 内容的相关技术发展还是比较缓慢的。最早的时候在浏览器是无法实现 3D 内容的,需要安装 Flash 插件。在校内网时代,那些农场类的游戏应用,以及在浏览器里看视频音频,几乎都需要安装 Flash 插件。2020 年的时候,因为有一些安全的问题和其他种种原因,Adobe 宣布停止维护 Flash 这项技术。
在 Flash 的发展过程中,出现了 HTML5 的标准,简称 H5。2008 年的时候,H5 雏形出现。人们不需要在浏览器里面装 Flash 的插件,能够直接播放视频音频,包括通过 Web 原生的 Canvas 组件实现一些动画效果。
真正的 Web 3D 的技术标准的出现,是 WebGL。由于浏览器天然具备的易分享等优势,在 Web 中展示和渲染 3D 内容一直都具有大量的需求。Khronos 在 2009 年启动 WebGL 标准的讨论和制定工作。WebGL 思路很简单,就是依靠浏览器的内核,对 OpenGL ES 版本做打包和封装,然后就可以让浏览器里的这些 JS 前端开发者直接用 Web 环境去调用底层的图形学能力,最终展示 3D 内容。当然也就意味着 WebGL 能力被限制到了 OpenGL 的时代。
Web 的技术在持续快速的发展。尤其 2014 年,Native 侧已经出了三大现代图形 API 了: DX12, Vulkan, Metal。在 2017 年的时候,W3C 就提出在 Web 侧发展下一代图形学的技术标准,即 WebGPU。跟 WebGL 一样,WebGPU 的思路就是对三个现代图形 API 直接打包,然后在实现跨平台的同时,让浏览器里面直接可以调用这三个现代图形 API 能力,实现高质量的渲染效果,调用 GPU 的强大计算能力。
https://en.wikipedia.org/wiki/WebGPU
我们熟知的 Unity 和 Unreal 就是典型的 Native 技术栈下的 3D 渲染引擎产品,而 Web 端也有大名鼎鼎的 Three.js,Barbylon.js, Cesium.js 和 Playcanvas 等等。面对这样两条路线,下面聊一聊关于技术栈选择上的思考。
Web 优势 1: 生态的发展和普及程度广
从技术角度来看,Web 相对于 Native 的发展相对是缓慢的。因为很多最新的技术都会在 Native 上最先实现。但是因为 Web 本身独特的优势,跨平台,易分享,易协同等等,一直都很受技术人员和多种应用场景的青睐。
浏览器厂商的努力也不容忽视,尤其是 Chrome。为了保证 Chrome 100 这个历史时刻的版本能尽早的发布,从 94 版本开始,将 6 周一更新提升到 4 周一更新。(Chrome 94 版本也是第一个正式启动 WebGPU API 的商用版本,而不在是通过 Chrome Canary 的 developer 版本才能体验的 WebGPU 的能力。)
https://blog.chromium.org/2021/03/speeding-up-release-cycle.html
浏览器承载的 Web 生态正在飞速的发展。下面的开源报告中关于开源环境技术方向的统计后端是最多的。但是我们可以看到,第二个就是 Web 的生态,也证明了 Web 生态是非常有潜力的。
2020 年开源环境技术方向
下面是 2020 年编程语言的分布报告。最多的是 Java,第二就是前端语言 JS,如果把 HTML 语言也包括其中,那 Web 的语言普及度优势将更加明显。这足以说明 Web 是一个快速发展具有巨大潜力的技术栈生态。
2020 年编程语言的分布
Web 优势 2: 免安装客户端,跨平台特性
Native 端,需要安装 APP 应用程序,在某些场景,对于用户来说是一个很高成本的行为。可以想象一下,如果你的家装设计师为你设计的室内 3D 全景渲染图,不是通过微信直接分享给你的(微信本身所有的分享内容都是基于 Web),而是要求你要在手机或者电脑上安装一个几百 M 甚至几个 G 的应用程序才能观看,那是一种什么体验呢?
Web 就很好的解决了这一个问题。我们不在需要为不同的场景安装不同的客户端,而是通过一个 URL 链接,就可以立刻浏览你想看到的任何内容。
换一个角度去思考,不仅不需要用户安装客户端,而是我们已经通过硬件设备中的浏览器触达到用户了。单独 Chrome 的全球装机量为 26 亿,占全部浏览器市场占有率的 60%;排名第二个也是采用了 Chromium 内核
2020 年-2021 年全球浏览器市场占有率
基于 Web 环境做任何的内容开发,也都因为这种天然的跨平台特性,实现了降低研发成本的目的。Orillusion 团队也极力打造 Web 端的 3D 渲染引擎。开发者们不需要在考虑为了一个项目开发不同的 APP,来适配不同的操作系统。因为浏览器已经帮我们实现了不同平台的适配工作。只要在一台主机的 Chrome 里能正常打开,那么在其他主机的 Chrome 里也可以正常打开。
我们目前梳理了 Native 和 Web 在 3D 渲染这个场景中的发展历史和技术演进。同时,也从开发者生态和免客户端跨平台这两个方面,阐述了一些 Native 和 Web 技术路线的对比和分析。在接下来的内容里,我们会给出更加深入的思考,希望大家持续关注。
关于文章前面提出的打趣观点: 选择 Native 技术栈还是 Web 技术栈,这是一个哲学问题,也欢迎更多的 Native 和 Web 开发者一起留言,加入 Orillusion 社区参与讨论!
如何加入 Orillusion WebGPU 社区?
第一步:长按下图,扫码添加管理员微信
第二步:填写论坛注册申请表
第三步:查看邮箱,点击注册申请链接
第四步:注册成功,欢迎留言发帖
欢迎更多的小伙伴可以加入我们的 Orillusion 社区,陪我们一起见证 WebGPU 的发展。我们会尽自己最大的努力把最干货最前沿的 WebGPU 技术分享给每一位社区成员,也诚心的希望大家为 Orillusion 开源社区做出自己的贡献。我们一直坚信,开源社区的技术留痕是每一位技术人员最崇高的追求。因此,我们尊重,我们认可,我们更期待,加入 Orillusion,让我们共同进步!
——Link uncharted, 链接未来世界
评论