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 端高斯泼溅领域占据优势的重要一步。