Spark v2.2.0 Adds Faster LoD Traversal, Rust Decoders

Michael Rubloff

World Labs has released Spark v2.2.0, which adds an experimental faster LoD splat traversal algorithm and moves every splat file decoder to Rust.
Spark is World Labs' MIT licensed gaussian splatting renderer for three.js. Spark v2.2.0 is the first tag in just under four months, and @sparkjsdev/spark now resolves to it.
The new traversal is opt in and runs on the LoD splat tree that arrived with Spark 2.0 in April, where each parent splat is a merged, lower resolution version of its children and a slice through the tree selects the splat set for the current viewpoint.
Spark v2.2.0 sets the provoking vertex to first where the WEBGL_provoking_vertex extension is available, which the release notes report as FPS gains of up to 14% on some systems and configurations, and they put splat sorting at up to roughly 20% faster.
spark-worker-rs and spark-rs are combined into one, so the WASM blob is embedded once and the WASM module compiled once. The JavaScript splat file format decoders are removed in favor of the Rust ones, and new opt in parameters omit splat formats, splat representations and LOD generation methods from the WASM blob to reduce its size. OldSparkRenderer and its related classes are gone, and the prebuilt bundles now install straight from the repository without a Rust toolchain on the machine.
Three changes track three.js itself. THREE.Clock, deprecated since r183, is replaced with THREE.Timer. Object3D subclasses call super.dispose() for r186 and later. Spark restores the pixelStorei value, which three.js has cached since r184.
New gsplatXaxis, gsplatYAxis and gsplatZAxis helper dynos return a unit vector along a splat axis, and Spark now handles preUpdate ahead of updating material uniforms, removing a one frame latency. The fixes resolve a RangeError when all spherical harmonic arrays are present, stop unclamped negative colors becoming NaN and rendering splats black, and stop Spark fetching and decoding the LoD chunks of an old scene after a scene change.
It has been an extraordinary week for gaussian splatting on the web, with the new SuperSplat 3.0, native three.js support, and now an update to one of the most commonly used rendering options. The new version of Spark is available now.
- TRENDINGLoading...
- TRENDINGLoading...
- TRENDINGLoading...
New to Gaussian Splatting? Start here




