Skip to content

Babylon.js 9.0:聚簇光照、节点粒子、高斯泼溅全面重做

Babylon.js 9.0 发布,是这款开源 WebGPU/WebGL 引擎迄今为止规模最大的一次更新。压轴功能是聚簇光照系统,让场景能在 WebGPU 和 WebGL 2 上以流畅帧率渲染数百乃至上千个动态光源。

Babylon.js 9.0 中全新的节点粒子编辑器

聚簇光照改变了一切

传统的逐像素光照要求每个像素都计算场景中每一盏灯的贡献,哪怕这些灯根本不在它附近。聚簇光照通过把光源按屏幕空间瓦片和深度切片分组解决了这个问题。渲染时,每个像素只会评估真正影响它的光源。结果是:一个有 1,000 个动态光源的场景现在能跑实时帧率,而不是龟速爬行。

这套方案在 WebGPU 和 WebGL 2 上都能用,意味着性能提升能触及尽可能广的受众。

带纹理的面光源

面光源是 Babylon.js 8.0 引入的。9.0 加入了发射纹理,所以你可以让任意图像穿过一个矩形面光源投射出来。想想彩绘玻璃投影、LED 屏幕,或者带物理准确发光的电影感打光。

体积光

新的体积光系统能渲染穿过雾、尘和霾的光柱。它包含可配置的衰减和相位参数,方便艺术家控制光线在大气中如何散射。系统支持方向光,并在可用时使用 WebGPU 计算着色器,在 WebGL 2 上有回退方案。

节点粒子编辑器

节点粒子编辑器(Node Particle Editor,NPE)是一个拖拽连接式的可视化工具,用来搭建粒子系统。如果你用过节点材质编辑器,工作流是一样的。你通过一张无破坏式节点图,完整控制发射形状、精灵图、更新行为、子发射器。流图(flow map)和重力吸引子也是粒子部分的新升级。

高斯泼溅全面重做

Babylon.js 在 7.0 引入了高斯泼溅支持。9.0 重写了整个系统,加入阴影投射、用于不透明类网格渲染的三角形泼溅,并在原有的 .splat、.ply、.spz 之外支持压缩格式 SOG/SOGS。你现在可以把多个泼溅资源放入同一场景做全局排序,每一部分都能独立变换和动画。Adobe 也参与了这部分工作。

Frame Graph 系统

Frame Graph 在 8.0 以 alpha 形式登场,本次发布迎来了 v1。它是一张有向无环图,每个节点代表一个渲染任务。系统自动管理纹理的分配、复用与优化。团队报告称某些情况下能节省 40% 以上的 GPU 显存。你可以通过节点渲染图编辑器以可视化方式编排自定义渲染管线,也可以通过类框架以编程方式实现。

其他新增

动画重定向让你能把动画从一个角色骨架应用到另一个,哪怕骨骼结构和命名规则不同。本次发布还包含重做的检视器、避免大坐标系下浮点抖动的大世界渲染,以及地理空间渲染能力。

参考资料