World Labs has released Spark Radix 0.0.1, an experimental WebGPU renderer for Gaussian splats in three.js.
Radix is a separate package from Spark, whose current release is Spark 2.4.0. Spark targets WebGL2 through three.js's WebGLRenderer and sorts on a worker, and Spark V2.0 added level of detail and paging in April.
Spark Radix draws through three.js r186's WebGPURenderer. On WebGPU, projection, compaction and a radix sort run as compute shaders before the draw, so the splats of every object are sorted together and drawn in a single draw call with nothing read back to the CPU. Where WebGPU is missing, the same TSL shaders compile to GLSL for the WebGL2 backend, the projection becomes a fragment pass, and the sort moves to a worker, so the drawn order trails a moving camera by a few frames.
Splats live in typed array tables with the same layout on the CPU, in workers, in RDX files and on the GPU, at 32 bytes per splat or 16 bytes packed. The main @sparkjsdev/radix entry point carries rendering, GPU arrays, WebGPU compute, workers and camera controls, with three as a peer dependency. The @sparkjsdev/radix/core entry point is the CPU layer alone, imports nothing and runs in workers and Node, with codecs, sort keys, and readers and writers for PLY, compressed PLY, SPZ, RAD, and RDX, Radix's own chunked format. Rendering offers EWA splatting and three ray evaluated methods, 3DGUT, HTGS and ray Gaussians, with spherical harmonics up to degree 3.
The Radix documentation compares the renderer with SparkJS 2.3.1. On an Apple M3 Max in Chrome at 1920x1080, it reports Radix on WebGPU at 1.37x the speed of Spark across five scenes from 0.5M to 10M splats, and 9.2 ms against 16.5 ms per frame on a 10M splat interior. On WebGL2, the same page reports Spark as 1.09x faster. The page also lists what Radix lacks, including level of detail selection, skinning, built in raycasting, built in SDF edits and Spark's SPLAT, KSPLAT and SOG formats, and it says Spark suits apps that need level of detail, edits or skinning, many file formats, or the widest device support today.
Of the 42 SparkJS 2.3.1 examples, 31 run on Radix as static ports, and the rest are blocked by level of detail selection, paged RAD streaming, the SOG format or skinning. Radix's own examples include a splat viewer, WebXR, MPM water, LCC and SOG viewers, and Doom and Quake. The Spark team is asking for bug reports and feedback on performance across devices.
Spark Radix 0.0.1 is available now on npm under the MIT license.



