首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Web 3D 圈摸爬滚打十多年的老兵热血自述:立志做中国跨时代 Web 渲染引擎

采访嘉宾 | 白景文

GMTC 全球大前端技术大会 (深圳站)2021 上,贝壳找房资深工程师郝稼力分享了《从 WebGL 到 WebGPU——网页图形的全新时代》的专题演讲,彼时他曾谈到一个观点:WebGL 已成明日黄花,网页图形的未来要看 WebGPU。这里提到的 WebGPU 正是最新的 Web 3D 图形 API,也是 WebGL 的升级版。

从目前来看,国外知名度较高的渲染引擎 Three.js 和 Babylon.js 等也都在着手对 WebGPU 的支持,从中不难看到,被称为“未来”的 WebGPU 标准或许正使得 Web 引擎们又站在了同一起跑线上。

近期 InfoQ 有幸接触到国内 Web 引擎团队 Orillusion,了解到他们正试图抓住这个机遇,发力打造国内首款 WebGPU 标准的渲染引擎——Orillusion。那么,WebGPU 标准究竟何时能够完全取代 WebGL?在实践 WebGPU 标准的过程中,又有何经验可分享?带着这些问题,InfoQ 采访了 Orillusion 团队创始人白景文。在采访过程中,InfoQ 深切感受到了一群在 Web 3D 生态圈摸爬滚打十多年的老兵们在面对新机遇时的兴奋和热情。

Orillusion 背后的热血故事

InfoQ:目前市面上其实已经拥有不少成熟的引擎产品,那么,团队又是为什么决定开始研发 Orillusion ?

白景文:首先我们把市面上的引擎分为两种:一种是基于 OpenGL、Metal、Vulkan、DX12 图形 API 研发的 Native 引擎;另外一种则是基于 WebGL、WebGPU 图形 API 研发的 Web 引擎。这两种引擎的区别是:Native 引擎需要安装应用程序,更接近于底层硬件,可以达到对显卡能力的极致调用,比如 Unity 和 Unreal;而 Web 引擎更多是利用浏览器环境,一个链接就可以打开引擎,比如 Three.js 和 Babylon.js 。其中,Orillusion 就是标准的 Web 生的 3D 引擎。

市面上现有的 Web 引擎,比如 Three.js 和 Babylon.js,都是非常优秀且成功的引擎项目,我们曾经是这两个引擎的重度用户,但不得不说在使用过程中也深受 WebGL 性能问题的困扰。从 2020 年开始,我们开始关注 WebGPU 的发展,并且判断出 WebGPU 引擎势必对 Web3D 产生革命性影响。

然而另一方面,我们同时看到国内现在还没有出现成熟的 WebGPU 引擎。由于 WebGPU 标准和 WebGL 标准是完全不一样的设计理念,所以可以说从研发全新的 WebGPU 引擎产品的角度看,与国外的引擎团队相比,我们在技术层面也丝毫不逊色。而且考虑到我们不需要兼容 WebGL 技术,轻装上阵,反而少了更多的历史包袱,变得更加有优势。因此,团队下定决心,抓住历史机遇,力争做一款国人自己的跨时代的 Web3D 引擎。

InfoQ:请您整体介绍下 Orillusion 引擎,包括如何架构、开发语言、API 设计等。

白景文:首先 Orillusion 是基于浏览器的 Web 渲染引擎,遵循了现代引擎都遵循的 ECS 组件式架构,采用了最新的 WebGPU 标准来提供底层的图形能力。

从技术上来看,Orillusion 实现了集群前向渲染和动态全局光照,使得整体的 3D 场景计算效率和渲染效果得到了质的提升;通过 DO 连续内存存储和 WebGPU 的 Compute Shader,实现视椎体剔除功能,减少额外的场景计算消耗;我们正在开发基于 GPU 的骨骼动画系统,通过并行计算能力更高效地支持更复杂精细的动画场景;利用 Compute Shader 的灵活性和高性能特性,开发基于 GPU 的物理仿真能力,比如粒子、软体、钢体、流体等。

与此同时,我们还在进行端云协同渲染的相关研究和实践工作,我们相信未来的引擎一定是基于云计算的全新架构引擎,这是元宇宙时代对于引擎提出的新要求。如何进行任务的端云切分,也是我们未来会着重努力的方向。

InfoQ:经了解,Orillusion 引擎是一种轻量级渲染引擎,目标是支持超大复杂场景的 3D 呈现。这种包大小和复杂功能之间的平衡,团队是如何考虑并实践的?

白景文:这里的轻量级其实主要想突出的是浏览器的运行环境。因为相对于 Native 原生的应用,Web 应用依托于浏览器,可以很轻松做到易分享、易协作、成本低、跨平台,同时也是天然的 SaaS 服务提供形式。虽然之前 Web 应用相对于 Native 的原生应用来说简单一些,但随着 Web 生态和技术的发展,浏览器的能力已经逐步增强。

然而 Web 最大的短板就是 3D 性能,WebGL 虽然使得 Web 获得了原生的 3D 渲染能力,但是和 Native 原生 3D 应用仍无法相提并论,因此,Web 生态中也很难发展出优秀的 3D 产品。但是 WebGPU 标准的出现将会彻底改变这一现状。它底层直接可以调用 Vulkan、Metal 和 DX12 的原生图形 API 能力,更加灵活且全面地释放了浏览器对于 GPU 的控制。很多曾经只能在 Native 原生环境才能实现的渲染效果,有了 WebGPU 之后,在 Web 中都会成为可能。这也是我们为什么把引擎的最终目标确定为在浏览器中支持超大复杂场景的 3D 呈现。

当然,如果最终和原生 3D 应用去对比,准备推出的 WebGPU1.0 标准还是有一定的差距,很多能力并没有在第一个版本中被释放出来。我认为这也是标准发展的一个正常现象,毕竟 DX 都已经到了 12 的版本号,而 WebGPU 即将发布 1.0 版本。随着 WebGPU 的发展,我们相信这种 Web 和 Native 在 3D 方面的性能一定会越来越好。

InfoQ:Orillusion 引擎特性之一为跨平台。目前其在不同平台性能表现是否有所不同?在不同平台面临的问题是否有所不同,又是如何解决的?

白景文:首先我们还是要说一下 Web 生态的优势。不同的电脑、不同的操作系统,如果用浏览器打开一个网站,内容都是一样的。这是浏览器厂商做出的巨大努力和成果,他们在底层帮我们实现了跨平台的能力。包括 H5 游戏,底层也是采用一种特殊的浏览器 Runtime 实现的。

浏览器的内核跟电脑的操作系统一样,是非常复杂的。目前全世界主流的浏览器内核只有三个:

  • Chromium:Chrome、Edge、Opera、360、猎豹。
  • Webkit:Safari、搜狗、QQ。
  • Gecko:Firefox。

其中,采用 Chromium 内核的 Chrome 和 Edge 这两款浏览器占据的市场份额高达 80%。

Orillusion 作为一款 Web 引擎,理论上只要通过浏览器打开,不论在什么平台上看,效果都是一样的。

但是,这里所说的“理论上”是有特殊情况的。虽然浏览器厂商都是参照 W3C 制定的标准来进行功能的实现,但是不同浏览器厂商实现的进度和实现的内部逻辑可能是不一样的。面对这种情况,我们通常会根据不同的浏览器去进行单独的适配和优化。

而有些情况可能无论如何优化,也是无法达到最终效果的,比如现在的 WebGPU 功能。由于 WebGPU 的标准还没有正式推出,每家浏览器厂商的实现速度是不一样的。目前,Chrome 是实现最完善、跟进最及时的。所以团队的做法是统一采用 Chrome 浏览器(Canary 开发者版本)进行开发和测试,同时也建议用户使用 Chrome 浏览器来浏览 WebGPU 标准下制作的 3D 场景。不过,相信这个问题会随着标准的推出和各家浏览器厂商的跟进而得到解决。

还有一点我们需要考虑的就是电脑本身的性能。毕竟,浏览器作为软件最终还是要安装在我们的设备中,所以设备本身的 CPU、GPU 和内存也是会影响到浏览内容的体验。对于 3D 场景来说,需要调用的硬件资源比较多,如果场景很复杂,也是需要一台性能不错的硬件电脑来支持的,这一点跟 Native 开发的 3D 应用是一样的。因此,未来解决如何运用好云端计算资源、来减少端侧对于硬件性能要求的问题,是非常有必要的。端云协同对于 Native 和 Web 的引擎都是同样值得关注的。

当下还有一个比较不错的方案,是通过 Electron 技术对特定版本的浏览器进行打包,发布成应用安装包来实现。Electron 技术可以锁定一个特殊的浏览器内核,自动生成不同平台的安装包,这种操作相对于 Native 的分发也要容易很多,操作成本很低。采用这种方式,也需要用户进行一下应用安装,通常比较适合 B 端的一些场景。

由于 WebGPU 是非常新的图形渲染标准,还没有被一些系统平台充分兼容,因此我们的重心暂时仍然是放在纯 Web 生态内展开研发工作。随着 WebGPU 的发展,我们会一直关注和跟进更多系统平台对于 WebGPU 的兼容程度,包括 Native 环境,相信未来一定可以完成更多平台的兼容和打通。

开源,Orillusion 这样定义

InfoQ:Orillusion 为什么会选择开源?

白景文:元宇宙或者 VR/AR 概念的兴起,将会改变 Web 各种内容呈现的形式,从文字到图片、到视频,最后再到 3D。虽然 3D 内容的标准统一还需要时间,但最终一定会实现。因为这种统一的本质是人类知识积累形式的要求,而 Web 世界中的内容正是人类知识的体现。

知识的承载必然发生在一个开放的世界当中,我们也坚信元宇宙的入口属于开放 Web 世界,而不是独立的超级 APP。对于 Web 这样一个天然的开放世界,原本就有良好的开源传统,已经孕育了大量开源优秀项目,比如 Vue.js、React.js、Three.js、 Babylon.js 等。

Orillusion 在创立之初就坚定地拥抱开源,开放包容、共创共赢是基本理念。通过开源可以帮助社区更好地了解技术,也可以通过社区影响力对技术进行推广,邀请更多开发者参与。社区积极快速反馈也能帮我们汲取更多的需求场景输入,帮助技术迭代更新,在未来的数字经济时代发挥更大、更积极的作用。

我们一直坚信,软件再优秀,如果没有构建起良好的生态,没有开发者和合作伙伴的共建,是很难走得更好、更远的。一个开源产品,社区的文化氛围和协同创造力,才是区别于他人最大的不同。在社区共享、共创、共赢,将会激发出无限的创造力,这就是开源最大的魅力!

InfoQ:请您谈谈,您认为真正的开源精神是什么?

白景文:我理解开源是一种开放、共享、协同的创新协作模式,它的本质是技术创新。技术人员可以花更多的精力放到创造性事务上,而不是做重复性的工作,也就是我们经常说的避免重复造轮子。

开源这种突破物理边界、高效敏捷的沟通和协同方式,也必将会为未来数字经济的发展带来新活力。同时,开源的高度开放和自由,也会让我们得到更好的共享和发展,降低学习、复用和改进成本,打破技术封锁。

无论是在全球还是国内,开源正在推动着信息技术数字经济的创新发展。从整个软件产业的供应链上看,开源已经成为未来信息技术的主战场。尤其对于国内来说,开源发展起步较晚,国内的开源基础软件需要更多的时间。

InfoQ:Orillusion 在计划今年正式开源。未来对于开源社区的治理,团队目前有什么想法及规划能跟大家分享一下吗?

白景文:开源社区的构建,国际上已经有很多优秀的开源项目和社区,国内的开源发展相对较晚,但是已经出现了很多优秀的、具有国际影响力的开源软件和开源社区。我们不是最早一批具有开源信仰的团队,但希望依靠自己的力量为国内的开源生态做出贡献。

第一,开源项目要有“轮子”的属性,容易扩展,可以使得更多的人依靠它,生长和创造出更多优秀的内容。

第二,开源代码需要有高质量保证。优秀的开源产品,最终是要应用到实际生产环节的。所以,保证整体的代码质量和部署后的长期稳定运行是非常关键的。

第三,开源需要强有力的运营,其中包括:

  1. 详细的教程文档,如果定位于国际化项目,中英两种语言的文档是必备的,可以降低大家的学习成本和门槛;
  2. 丰富的案例,让开发者有更加直观的学习体验,可以迅速复制或者改造出自己需要的应用和场景;
  3. 社区要保持活跃度,产生高质量互动。不论是针对于社区的 Issue 反馈,Pr 合并申请,都要有明确的规定,而且要有详细的共创指南,也就是我们所说的如何为社区做贡献的流程和方法,让不同技术水平的开发者都可以参与进来;
  4. 线下或线上开发者活动是必要的,举办开发者会议或行业大咖分享活动都可以保证和社区成员的高效沟通,为大家创造分享学习的机会;
  5. 校企联动,引导高校学生参与,我们将会和各大高校进行合作,帮助更多学生参与开源社区建设;
  6. 官方教学课程,我们会陆续上线针对不同人群定位的视频教程,可以更加形象地对社区完成输出。目前已经颇有成效。我们在 B 站推出的 WebGPU 小白课程已经上线八期,得到了大家的一致好评。

可以说,开源项目的属性和代码质量是基础,有效的运营是社区快速成长的动力。

未来已来:“依靠努力,加速新标准普及”

InfoQ:正如 Flash 的消亡也经历了一个过程,目前是否可以判断出 WebGL 大概何时会被 WebGPU 完全取代?

白景文:当年 Flash 最大的问题是,它并不是 Web“亲生”的。众所周知,浏览器的设计原则是沙盒机制,简单说就是自己的页面自己控制。但是 Flash 是另起了一个新的运行环境去展示内容,这种方法摆脱了浏览器的控制,也带来了很大的安全隐患。而且,随着移动时代的到来,Flash 较大的性能消耗已经不适应移动设备了,因此在 2010 年,Flash 的发展走到了尽头。

随后取而代之的就是 WebGL 标准,这是真正的完全属于 Web 生态的图形 API,浏览器可以原生地支持 3D 内容的渲染显示,包括随后出现的 WebRTC 协议,也可以基于浏览器应用层直接发起类似于 UDP 的通信请求。慢慢地, Flash 的所有功能都被 Web 原生的标准逐渐的取代了。但是客观来讲,Flash 并不是被打败了,而是孕育出了更多的新技术。H5 的标准和 RTMP 协议的出现等都有 Flash 的功劳。

那当下 WebGPU 的标准出现对于 WebGL 会有什么影响呢?在我们看来,这种影响不会产生像 Flash 一样的结局,或者说短期内是不会的。首先 WebGL 本身就是 Web 生态的标准,不是外来技术,也不会影响浏览器本身的沙盒机制。而且 WebGL 发展了 10 年,已经建立好了很好的内容生态和开发者生态,也是目前普遍使用的技术。相对来说,WebGPU 的标准还没有正式发布,新标准的推广和普及也是需要时间的。参考 Native 生态的图形 API,2014 年后出现的现代图形 API 包括 DX12、Metal 和 Vulkan,到今天也没有彻底让 OpenGL 消亡掉。因此从历史角度的分析可以很简单地得到一个结论:WebGL 和 WebGPU 应该会有比较长时间的共存状态。

但是我们看待这个问题更多的是面向未来。说到未来,就要考虑全新的场景,那就是大家都在关注的元宇宙。未来一定是一个 3D 场景爆发的时代,一定是对 3D 要求更加多样性的时代。甚至很多应用形态和内容,都还没有真正的出现,这种未来的场景要求,必然需要更好、更新、更强的技术支持。我们必须要明确的是,Native 生态的现代图形 API 是未来,而 WebGPU 也肯定是 Web 生态的未来。随着硬件显卡的能力的增强,不论是 Native 生态还是 Web 生态,全新的现代图形 API 框架的设计,已经和上一代的标准出现了代际差别,性能和灵活度上都是 OpenGL 或者 WebGL 无法比拟的。我们相信,未来 Web 生态中应用对于开发者有更多的要求。那就必然会使得更多的技术人员“不得不”从 WebGL 转向 WebGPU,甚至一些新加入的技术人员从第一天起就会选择 WebGPU 作为第一个上手学习的图形 API。

我们正是希望依靠自己的努力,加速新标准的普及。因此,Orillusion 放弃了 WebGL 标准,选择 WebGPU 做为唯一的底层图形 API。团队成员作为 Web3D 生态摸爬滚打 10 多年的老兵,非常相信自己有能力释放出更多的 Web3D 能力,打造更加丰富的 Web3D 生态,为未来的 3D 场景爆发时代做好充足的准备。

InfoQ:有人表示目前 WebGPU 可用性可以,但还非常不稳定,您如何看待这种说法?这种现状会对 Orillusion 引擎的研发有所影响吗?

白景文:这种说法是非常客观的,我们在研发过程中的确会遇到。我们可以在 Github 上看到 WebGPU 的功能和实现每天都在发生,难免会涉及到一些修改和调整。

从开发角度来看,其实目前 WebGPU 的 API 基本都已经稳定了,而多数的修改都是存在于 WGSL 这种新的 shader 语言当中。简单说,整体的引擎开发层面不会受到很大的影响。但是对于一些算法实现和调用,shader 部分的调整会受到干扰,以目前我们的实测经验来看,完全可控,所涉及的修改也是立刻可以被定位到,从而及时做出研发的调整。

从时间的角度来看,在标准完还没有定下的时候来开发引擎是否可取呢?我们认为是非常正确的。首先可以参考 Three.js 引擎,Three.js 诞生于 2010 年,而 WebGL1.0 的发布是在 2011 年。

Three.js 的出现和发展就是一直伴随着 WebGL 标准的制定和发展。一路走到今天,从开源社区角度来看 Three.js 是很成功的。Babylon.js 仅仅比它晚了 3 年,但今天来看,和 Three.js 的地位还是有一些差距的。从中,不难看出看出 Timing 的重要性。这也是为什么我们要坚持在 WebGPU 还没有正式发布之前,就开始深入进行引擎的研发。最早期的积极参与,让我们对于新标准的理解和运用都会有自己的优势。经过两年的关注研究和一年的引擎研发实践,不论在国内乃至全球,我们团队在 WebGPU 引擎的技术研发层面都具有非常明显的优势,这对于引擎本身和公司发展也都是非常重要且宝贵的。

而且,WebGPU 标准的发布已经指日可待了。这也就是说,我们是选择在黎明前的黑暗时刻去做一件未来一定正确的事情。这相比开发过程中遇到的一些不稳定,是有必要面对且完全可以克服的。

InfoQ:未来,3D 渲染的发展前景会是怎样的?Orillusion 将会发挥什么样的作用?

白景文:一个 3D 应用场景的搭建一般需要 4 步:建模型、搭场景、编逻辑、发应用。每一步都有成熟的产品和解决方案。比如建模型可以从无到有地创造 3D 内容,或者通过用激光雷达(Luminar、LiDAR)采集周围环境信息来生成 3D 内容,最后要通过 3Dmax 和 Maya 这类建模软件完成。当然,最近非常火的 AIGC 也是更加高效的 3D 内容生成方式,也是我们认为可以降低 3D 内容生成门槛的最终解决方法。搭场景和编逻辑,让独立的 3D 模型内容变成更加丰富的场景,同时用代码赋予其应用逻辑,让场景动起来,变成真正的 3D 应用,我们的游戏就是这样的一个制作过程。这个过程在桌面级应用里已经几乎被 Unity 和 Unreal 统治了。最后的分发应用,其实就是各种云服务厂商领域,我们要建立各种云服务和数据库来支持 3D 应用的正常运作,当然很多国内企业也有私有云部署的需求。

目前我们处于一个 3D 应用场景爆发式增长的前期,随着元宇宙持续的发展,无论从设计师还是技术人员角度,都需要大量的生产力来满足未来更多的 3D 内容制作和呈现需求。专业级应用固然有它的优势,但我们认为轻量级的解决方案可以降低 3D 内容制作门槛,覆盖更多的用户。我们相信,未来元宇宙入口很可能不是一些独立的超级 APP 来构建,而是一个开放的生态,Web 具备了天然的开放优势。而且,JavaScript 做为 Github 排名 TOP1 的开发语言,这些 Web 生态的巨量的技术人员,都可以为元宇宙时代做出贡献。

目前,最大的一个空白就是在 Web 路线中,缺少一个底层的平台级的引擎产品。我们认为一直没有出现的原因是 Web 的发展原本比 Native 慢很多。虽然在 WebGL 时代,Web3D 内容已经得到了极大的丰富,但由于性能原因,企业和技术人员很难有动力花更多精力去做应用创新,但是有了 WebGPU,情况就有可能得到彻底的改变。

这是 Orillusion 目前正在探索的事情,非常前沿且非常有挑战。我们更多的思考不是在最早期给自己一个明确的垂直场景定位,把一个具体的产品做为对标,而更多的是在思考怎样在这样一个全新的轻量级 Web 赛道,利用好它的技术优势和场景优势,捉住最好的时机,在底层搭建一套完整成熟易扩展的通用底层基础工具。

这是一个新技术支持的新赛道,面对的是一个具有非常大想象空间的新场景。做好底层技术、搭建基础能力,面对随时出现和爆发的未来场景,是驱动我们前进的逻辑,也是我们开源的内在驱动力。我们也期待和业内广大技术人员一起思考,共同进步。

嘉宾介绍:

白景文,Orillusion 创始人 & CEO。2012 年毕业于北邮,同时取得英国伦敦大学玛丽女王学院双学士学位。本科毕业后,获得国家建设高水平大学公派留学直博项目奖学金,前往英国伦敦大学玛丽女王学院攻读计算机博士学位。博士毕业后,加入帝国理工大学数据科学实验室,进行数字渲染可视化方向的博后研究工作,主要负责全球数据观察站 GDO 分布式渲染架构的设计和研发。目前在国内创业,成立北京鸥睿零世科技有限公司。专注于 Web3D 引擎底层技术研发,计划打造一款完全开源的基于 WebGPU 标准的轻量级通用渲染引擎——Orillusion。致力于在浏览器中实现桌面级渲染效果,支持超大复杂场景的 3D 呈现。努力打造优秀开源软件及开源社区,为元宇宙 3D 场景爆发时代提供底层引擎基础工具。

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/JpwH0pfcCgUR14tvlOuc
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券