SPZ Gaussian Splat tile loading stalls the main thread during decode and SH packing
- Dominant language
- JavaScript
- Stars
- 15.7k
- Forks
- 3.9k
- Avg merge
- 4d 6h
- Merged PRs (30d)
- 34
Description
### What happened?
Loading Gaussian Splat 3D Tiles with SPZ compression causes severe main-thread stalls. When tiles are requested and decoded, the viewer becomes noticeably unresponsive: frames are dropped and tile loading blocks rendering for a visible amount of time.
The main bottleneck appears to be SPZ decoding and spherical harmonics packing. In particular, decoding SPZ payloads and packing SH data into half-float texture-ready buffers currently performs expensive CPU work on the main thread. Large tiles or tiles with higher SH degree make the stall much worse.
### Reproduction steps
1. Open a CesiumJS app or Sandcastle example that loads a Gaussian Splat 3D Tiles tileset.
2. Use a tileset with large SPZ payloads and spherical harmonics attributes, especially SH degree 2 or 3.
3. Start navigating so new tiles stream in.
4. Observe that the viewer freezes or stutters while tiles are loading.
5. Capture a performance profile in browser DevTools.
6. Notice long main-thread tasks during SPZ decode and spherical harmonics packing.
### Sandcastle example
_No response_
### Environment
Browser:Chrome
CesiumJS Version:1.141
Operating System:Windows
### AI acknowledgment
- [x] I used AI to generate this issue report.
- [x] (If the above is checked) I have reviewed the AI-generated content before submitting.
Contributor guide
Research direction
No files, tests, or code entry points are named. Reproduce the issue with a large SPZ Gaussian Splat 3D Tiles tileset, SH degree 2 or 3, and a Chrome performance profile; compare tile loading and frame responsiveness during SPZ decoding and SH packing. Done means the reported stalls are addressed and profiling no longer shows long main-thread tasks during those operations.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- computer-graphics, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 38/100