WebGPU时代,为什么不是Three.js or Babylon.js?
-
对于Web3D领域的两个非常优秀的引擎,大家肯定都不陌生,他们就是Three.js和Babylon.js。
说到构建WebGPU引擎,你一定会问为什么不是Three.js或Babylon.js?
Three.js是JavaScript语言开发。2010年,西班牙开发者Ricardo Cabello (Twitter: mrdoob)在Github上放出了第一个public版本。
Three.js 官网
https://threejs.org/我们熟知的WebGL是在2009年被Khnoros组织提出,可以说Three.js的发展史,就是WebGL标准的发展史。
**Bablyon.js是TypeScript语言开发,**是由微软内部团队,于2013年主导的另外一款引擎。它的封装更加高层,功能也相对复杂很多,而且拥有很多比较成熟的工具,比如Node Material Editor。相比Three.js,Babylon.js可以说更像一款比较成熟的Web3D游戏引擎。
Babylon.js 官网
https://www.babylonjs.com/但是由于timing的原因,Github上的Star数量,截止2022年2月,Three.js(78.8k)远高于 Babylon.js(15.8k),Three.js依然是基于WebGL标准下最为流行的Web 3D引擎。
为什么不是Three.js or Babylon.js?
WebGPU标准的发展,也一直被广泛关注。Three.js和Babylon.js,已经在相应的分支,**做了WebGPU能力的接入和一些Demo的展示。**我们看到了他们的实现和demo,也更加的相信,WebGPU引擎这件事儿,大概率他们做不成。
因为Three.js和Babylon.js两个引擎架构都是为了WebGL而设计的,而WebGPU对比WebGL可以说发生了翻天覆地的变化,取消了全局状态机,给了开发者过多的权限来控制内存,增加了Compute Shader等等。因此,Three.js和Babylon.js不能说是支持了WebGPU,只能说接入了WebGPU,但是由于历史包袱,根本无法发挥出来WebGPU的优势。
口说无凭,通过一系列的测试,我们得出这样的结论。测试结果
Three.js的WebGPU Demo,跟WebGL Demo来比,几乎没有什么提升。封装更加高层和复杂的Babylon.js,WebGPU 的Demo的实现竟然比WebGL还要慢。
相比之下,目前我们的Orillusion官方放出的Demo,比WebGL引擎快了将近5倍。下一个版本的对比特性,我们已经快了10倍。如果发挥到WebGPU性能的极致,可以快出30倍。
https://demo.orillusion.com/ecs/example/asteroids.html
如果Three.js和Babylon.js真的想做一款可以充分发挥WebGPU性能的引擎出来,那只能壮士断腕,对引擎框架进行彻底的重构。因为Three.js和Babylon.js的历史包袱太重了,他们有大量的用户,有大量的功能实现,完全放弃而进行重新开发,这是需要巨大勇气的,而且我们目前没有看到任何这样的迹象。
所以有的时候,做的早不一定做的好,这也就是技术迭代带来的新机遇。
我们可以等未来某天Three.js和Babylon.js重构架构支持WebGPU,可能是半年?甚至是一年?但是,在这么好的一个时间节点,为什么中国的团队不能做出一款同样优秀的Web 3D引擎,实现弯道超车呢?
之前我们擅长于场景创新和商业模式创新。但是,在这样一个好的时间节点,我们应该把精力放在底层的技术研究上:这是一种思维模式的改变,更是一种认知的改变。
元宇宙正在朝我们走来,3D渲染的场景未来会暴增。有了核心的3D底层技术,上层场景才会有无限的可能。中国的技术开发者需要时间,中国的基础软件需要时间。在这个过程中,Orillusion希望能做出一点儿贡献。
-
有没有更加详细的技术对比呢,聊聊具体Three.js和Babylon.js会有哪些历史包袱。