-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
SOGS runtime performance is currently worse than compressed.ply when spherical harmonics are included. On slower devices scenes can run 50% slower.
The reason for this is that SOGS stores spherical harmonics coefficients in a limited size palette and each gaussian references into this palette. During rendering, the palette is accessed in practically random order thereby killing the GPU memory cache.
We have two alternatives to address this:
a. de-palletize the coefficients at load time and store coefficients per splat (matching uncompressed.ply)
b. update spherical harmonics independently from rendering and cache the evaluation to a "work buffer"
The downside of a. is that we lose much of the runtime memory savings that we currently enjoy, especially on mobile/ios. The upside is it's very simple to implement.
The downside of b. is that this is a more complex solution. However the upsides are numerous:
- this solution should be faster than compressed.ply, since we can evaluate a small number of the closest gaussians per frame (instead of all of them)
- we expect to require a "work buffer" solution for positions and covariances anyway, in order to solve global sorting and LOD/streaming
Metadata
Metadata
Assignees
Labels
Type
Projects
Status