Orillusion

    • 注册
    • 登录
    • 搜索
    • 版块
    • 最新
    • 标签

    WebGPU时代,为什么不是Three.js or Babylon.js?

    Wiki
    orillusion
    2
    2
    1368
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • admin
      admin 最后由 shuangliu 编辑

      对于Web3D领域的两个非常优秀的引擎,大家肯定都不陌生,他们就是Three.js和Babylon.js。

      说到构建WebGPU引擎,你一定会问为什么不是Three.js或Babylon.js?

      Three.js是JavaScript语言开发。2010年,西班牙开发者Ricardo Cabello (Twitter: mrdoob)在Github上放出了第一个public版本。

      1*Rlm5ljbZxoVU5-WSh03miQ.jpeg

      Three.js 官网
      https://threejs.org/

      我们熟知的WebGL是在2009年被Khnoros组织提出,可以说Three.js的发展史,就是WebGL标准的发展史。

      **Bablyon.js是TypeScript语言开发,**是由微软内部团队,于2013年主导的另外一款引擎。它的封装更加高层,功能也相对复杂很多,而且拥有很多比较成熟的工具,比如Node Material Editor。相比Three.js,Babylon.js可以说更像一款比较成熟的Web3D游戏引擎。

      1*5IivB5_7svjU8LhW48TCpg.jpeg

      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倍。

      WechatIMG4457.jpeg

      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希望能做出一点儿贡献。

      1 条回复 最后回复 回复 引用 5
      • kiwenlau
        kiwenlau 最后由 编辑

        有没有更加详细的技术对比呢,聊聊具体Three.js和Babylon.js会有哪些历史包袱。

        1 条回复 最后回复 回复 引用 0
        • First post
          Last post

        Recent Post

        • U

          @shuangliu 谢谢大佬回复,本子开了性能模式核显全局禁用了是在用3070ti跑的,但从占用率看很奇怪cpu和gpu都没跑满,cpu跑的稍微多一点30%占用频率4.3Ghz,gpu占用没上过20%,功耗也都是40w上下,感觉主要还是卡在chrome优化上😥 光追现在只能纯模拟那确实还是玩具,等新标准支持了

          • 阅读更多
        • @ukiasu 现在chrome里还不支持动态选择集成显卡或独立显卡,如果没有手动设置chrome使用3070ti,大概率还是用的i9自带的集成显卡在运行,可以检查一下到底用的哪个gpu

          另外,这个webgpu测试中最占据时间的步骤是cpu拷贝数据到gpu,目前的版本这部分的优化还不如webgl的效率,可以去测试一下 webgl和webgpu拷贝数据的效率 https://forum.orillusion.com/topic/39/chrome-writebuffer-performance
          如果 Dawn/Chrome 优化的好,理论上应该帧率能提升1倍以上

          另一点,目前webgpu还不支持硬件级别的光追管线,如果拿纯软件模拟,渲染效率会比较低,实际的意义不大,这部分可能要等webgpu下一个标准去支持

          • 阅读更多
        • U

          能搞一个比较新的平台的测试吗?我用12代i9+3070ti的笔记本看了一下demo感觉极限突破了很多,拉到100wbox还有18fps。想看光追性能、PBR材质渲染性能的测试

          • 阅读更多
        • 回复: Three.js vs Babylon.js vs Orillusion - Box 渲染测试

          rt,请问可以获得这个例子中渲染所使用的代码吗?我想进一步探究这种性能差距究竟来自于代码(开发者)还是框架(运行时)。

          • 阅读更多
        • 有没有更加详细的技术对比呢,聊聊具体Three.js和Babylon.js会有哪些历史包袱。

          • 阅读更多

        Copyright © 2022 Orillusion | Contact US