高斯泼溅渲染架构
PlayCanvas 通过共享管线,将所有 GSplat 组件单元统一排序,保证整个场景正确顺序,并支持程序化数据、流式 SOG 和 GPU 处理。
全局排序
所有组件参与一次全局排序,而不是组件内部排序后再按包围盒排列组件。这可避免:
- 组件重叠的可见性伪影。
- 相机移动、组件顺序变化时的跳变。
- 不同组件间的错误深度顺序。
架构概览
管线包含数据存储和操作:
GSplat 资源
源数据有两类:
- 文件加载:PLY、SOG 或流式 SOG。
- 程序化:通过 GSplatContainer 创建。
各资源按数据格式存入 GPU 纹理。
工作缓冲区
为每个渲染 GSplat 的相机/图层组合自动创建,作为中间存储:
- 复制可见组件全部数据。
- 按相机深度全局排序。
- 准备排序后的数据以渲染。
这让需要统一访问全部单元的全局排序、跨组件效果成为可能。
相机渲染
相机渲染包含 GSplat 的图层时,从工作缓冲区绘制排序数据,无论组件数量和重叠方式如何,都保持正确顺序。
实时示例
Global Sorting 演示多个重叠组件如何通过统一排序消除伪影。
全局排序示例
优点
- 画质更好:消除重叠组件伪影。
- 渲染一致:不受相机位置影响,保持正确深度。
- 更复杂组合:支持大量组件。
- 高级功能:程序化、流式 SOG 和 GPU 处理。
高级功能
以下功能建立在此管线上: