TurboSPZ

A pure-Rust, memory-safe SPZ encoder + decoder for 3D Gaussian Splats — byte-identical with Niantic’s libspz v4 reference, SIMD-accelerated, deterministic across architectures, and engineered as a drop-in replacement for libspz on every consumer that links it (Niantic Lightship, Scaniverse, third-party splat viewers).

  • Smaller files than libspz: 1.4-1.8% smaller on the upstream hornedlizard.spz (786k splats) and racoonfamily.spz (933k splats) fixtures, sh_degree=3.
  • Faster encoder than libspz: 1.67x-2.32x faster on every shipping backend (Mac NEON + Windows AVX2), measured 2026-05-16. Encoder output is byte-identical between AVX2 and NEON — same input, same bytes, regardless of CPU.
  • Faster decoder than libspz on our own files (Windows AVX2: 1.28x). Mac NEON ties on our files; libspz-formatted files on Mac are the one remaining gap (0.79x, was 0.42x pre-#20) and live entirely in the upstream turbo-zstd-rs SH-stream decoder which is under active improvement.
  • 8 platforms from a single release: Linux (x86_64 gnu/musl, aarch64), macOS (x86_64, aarch64), Windows (x86_64-msvc), WebAssembly (wasm32-unknown, wasm32-wasip1) — with real SIMD128 in WASM for browser-side splat decode.
  • Pooled-buffer decode context (DecodeContext) amortizes the per-call GaussianCloud allocation across decodes — closes libspz’s Windows decoder gap entirely (libspz allocates per call; we re-use). Critical for streaming splat viewers and real-time pipelines.

Drop-in for libspz

TurboSPZ ships a libspz drop-in cdylib with the upstream C++ symbol set:

  • libspz.so / libspz.dylib / libspz.dll — drop in for Niantic’s libspz and every linking application keeps working unchanged.
  • Decoder-only variant libspz_decode.{so,dylib,dll} — keyless, freely redistributable.

The native turbospz.h C ABI and the libspz drop-in shim both ship today, each in full and decoder-only variants.

Memory safety

libspz is C++. It carries the manual-memory-management history of every C/C++ codec — sometimes that’s a buffer-overflow CVE, sometimes it’s a quieter use-after-free that costs a debugging week. TurboSPZ is pure Rust. The consumer-facing API contains zero unsafe. Internal SIMD intrinsic call sites use unsafe blocks (because that’s how std::arch exposes them) but the unsafety is bounded and auditable in one grep. If you parse untrusted SPZ input — splats uploaded from a customer’s phone, content fetched from a CDN, files from a marketplace — TurboSPZ removes a class of vulnerability that the C++ library cannot.

Free to decode, free to integrate

Decoding SPZ v4 files requires no license and no runtime check. The free decoder-only variant ships every release; download it from the public decoder downloads page or from the GitHub Release assets.

Every viewer / preview pipeline runs unrestricted:

  • All turbospz_decode* byte-identical with libspz’s reference output.
  • Pooled-buffer hot-loop (turbospz_context_create + turbospz_decode_into) — zero allocations after warmup.
  • Header-peek (turbospz_get_header_info) without touching the ZSTD payload.
  • Drop-in for the libspz decompressSpz + loadSpz chain.

Encode — licensed

Producing SPZ blobs requires a Bitruvius license. That covers:

  • SPZ v4 encode (byte-identical with libspz; 1.7-2.3x faster).
  • Configurable position fractional bits (1-15), SH coefficient bit widths (1-8), coordinate frames (RUB / RDF / RUF / LUF / RDB / LDB).
  • All 4 production SIMD backends (AVX2, NEON, WASM SIMD128, scalar fallback). AVX-512 + SVE2 opt-in via nightly features (M8).

Access

Sign in to the customer portal to download binaries, generate a license, and read the full documentation:

  • Download binaries — prebuilt static + shared libraries for every supported platform, plus the generated turbospz.h C header. Signed URLs, 15-minute expiry.
  • Full documentation — install guides, quickstart, drop-in procedures for libspz consumers, API reference, performance benchmarks vs libspz, and license activation.
  • License management — generate, view, and rotate license keys.

No account yet? Your Bitruvius contact provisions customer users once your contract is active.