Skip to content

PlayCanvas v2.17:WebGPU 上的半精度高斯泼溅 ​

PlayCanvas Engine v2.17.0 带来了一组聚焦的改进,把高斯泼溅在 WebGPU 上的能力向前推进。本次发布加入了半精度球谐函数、GPU 驱动的排序与剔除管线,以及用于管理整场景 LOD 的全局 splat 预算。

SuperSplat 演示,PlayCanvas CEO Will Eastcott 讲解高斯泼溅的编辑与优化

f16 球谐函数 ​

最大的技术新增是 WebGPU 上高斯泼溅使用半精度(f16)的球谐函数。球谐函数为每个 splat 编码视角相关的颜色信息,是泼溅管线中最重的数据结构之一。从 32 位浮点切到 16 位浮点能将内存占用大约减半,而画质损失微乎其微。

这只能在 WebGPU 上工作,因为 WebGL 原生不支持 f16 缓冲。又一次说明 WebGPU 让此前不切实际的优化成为可能。

GPU 驱动的排序与视锥剔除 ​

v2.17.0 在 WebGPU 上为 splat 引入了 GPU 驱动的排序与视锥剔除管线。此前 splat 排序在 CPU 上进行,对包含数百万高斯的场景而言已成瓶颈。把这部分移到计算着色器,意味着 GPU 同时完成排序与剔除,不再需要数据往返 CPU。

视锥剔除会在排序之前丢弃相机视野之外的 splat,进一步降低负载。

全局 splat 预算 ​

新增的全局 splat 预算系统提供整场景的高斯泼溅 LOD 管理。当场景包含多个 splat 对象时,你可以为整个场景设定一个 splat 总数。引擎会根据距离和屏幕覆盖自动在对象间分配预算。

对那些把多个扫描得到的环境或物体合成在同一场景的应用很实用,比如虚拟展厅或建筑漫游。

使用 PlayCanvas 浏览器自托管高斯泼溅模型

Color Enhance 与渲染更新 ​

本次发布加入了新的 Color Enhance 后期效果,支持中间调控制,以及半精度的 bloom 着色器以提升性能。Material.meshInstances 从 Array 改为 Set,加快了实例移除操作。同时为渲染管线增加了 front face 支持。

v2.16.0 奠定的基础 ​

上一个版本(v2.16.0,2 月 3 日)加入了 2D 高斯泼溅(2DGS)支持与 WGSL subgroup 支持。2DGS 使用扁平圆盘而非 3D 椭球,对墙面、地板等平面几何能产出更锐利的表面重建。WGSL subgroup 支持让计算着色器可以做 wave 级操作,在支持的 GPU 上加快并行归约。

v2.16 与 v2.17 一起,构成了 PlayCanvas 在 web 端高斯泼溅领域占据优势的重要一步。

参考资料 ​