Skip to content

Instantly share code, notes, and snippets.

@schwa
Last active September 3, 2026 17:42
Show Gist options
  • Select an option

  • Save schwa/e1378d004c183eac7bdd4dabfa277b92 to your computer and use it in GitHub Desktop.

Select an option

Save schwa/e1378d004c183eac7bdd4dabfa277b92 to your computer and use it in GitHub Desktop.
splat-formats.md

Splat formats

Bytes per splat is measured on a test file: an interior scan of a room, 711,677 splats, with degree-3 spherical harmonics.

Format Source Year B/splat Lossy SH Extensible Fixed order
.ply INRIA convention (reference) 2023 248.0 no yes yes1 no
.splat antimatter15 2023 32.0 yes no2 no no
.sog PlayCanvas 2025 17.4 yes yes unofficial3 yes4
.ksplat GaussianSplats3D 2023 48.1–140.05 levels 1–2 ≤2 no yes6
.glb KHR_gaussian_splatting 20267 220–2408 optional yes yes9 no
.lcc XGRIDS 202510 32–9611 yes 0 or 3 unofficial12 yes13
.spz v3 Niantic 202514 20.9 yes yes no no15
.spz v4 Niantic 2026 19.9 yes yes yes16 no15
.usd ParticleField3DGaussianSplat 202617 118.0–236.018 optional yes yes19 no
.rad Spark 2.0 / World Labs 2026 64.920 yes yes yes21 yes22

Container formats

These formats do not define their own splat encoding. They organize other formats into a spatial tree with levels of detail, for streaming.

Format Source Contains
"streamed" .sog PlayCanvas standard unbundled .sog chunks
.lcc2 XGRIDS leaf data as .ply, .spz, or .sog (splatType field)

Footnotes

  1. .ply: arbitrary header properties.

  2. .splat: no SH at all — view-dependent color is dropped, which disqualifies it for our use.

  3. .sog: zip file with a JSON meta.json.

  4. .sog: spatially ordered — it's in the name.

  5. .ksplat: compression level 2; level 1: 72.1, level 0: 140.0. Layout specified only by source code.

  6. .ksplat: at levels 1–2 (spatial buckets); free at level 0.

  7. .glb: release candidate.

  8. .glb: maximally quantized; all-float32: 240.0. SH must stay float32.

  9. .glb: glTF extension mechanism.

  10. .lcc: whitepaper published; format shipped earlier in XGRIDS tools.

  11. .lcc: from the spec, not measured; 32 without SH.

  12. .lcc: versioned JSON meta.lcc.

  13. .lcc: spatial nodes + LoD levels.

  14. .spz: v1: 2024.

  15. .spz: order is free but affects compressed size. 2

  16. .spz: vendor extension records.

  17. .usd: schema added in OpenUSD 26.03.

  18. .usd: float16 attributes; float32: 236.0. Raw arrays, UsdVol schema.

  19. .usd: USD schemas / applied APIs.

  20. .rad: per input splat; 45.7 per stored splat — the LoD tree adds ~42% splats.

  21. .rad: JSON chunk headers with named encodings.

  22. .rad: LoD tree + spatial 64K-splat chunks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment