How Spark 2.0 Brings Billion‑Point 3D Worlds to Mobile Browsers
Spark 2.0 is an open‑source WebGL2‑based rendering engine that uses continuous LoD trees, a custom RAD file format, and GPU memory virtualization to stream and display massive 3D Gaussian‑splatting scenes on phones, tablets and browsers with smooth, real‑time interaction.
Overview
Spark 2.0, released by the World Labs team led by Fei‑Fei Li, is a browser‑compatible rendering engine that makes it possible to explore ultra‑large 3D worlds on ordinary smartphones and computers. By treating the scene as a massive collection of semi‑transparent ellipsoids (3D Gaussian splats) instead of traditional polygon meshes, Spark can compress and stream billions of data points efficiently.
Leaving Polygons Behind: Embracing Gaussian Splatting
Unlike polygon meshes, 3DGS (3D Gaussian Splatting) represents surfaces with millions of colored ellipsoids that follow a Gaussian density distribution. Each ellipsoid stores its center, three scaling radii, rotation, base color and opacity. Rendering uses a painter’s algorithm that sorts ellipsoids by depth, draws them back‑to‑front, and blends overlapping regions using over‑operators.
Technical Breakthroughs for Data Explosion
To cope with the sheer volume of points, Spark 2.0 combines three core techniques:
Continuous LoD tree : A hierarchical tree groups nearby ellipsoids into larger proxy nodes, allowing the engine to select the appropriate level of detail based on camera distance.
Progressive streaming : The engine first shows a coarse outline, then streams finer data as the user moves, similar to adaptive video buffering.
RAD file format : A new column‑oriented, gzip‑compressed format stores ellipsoid attributes in 65 000‑point blocks with a lightweight JSON header, enabling random access and partial downloads.
The LoD system lets developers set a rendering budget (e.g., 0.5–2.5 million points) and guarantees a constant number of points per frame, keeping frame rates stable even for scenes with billions of elements.
Progressive Streaming and GPU Memory Virtualization
RAD files are split into indexed blocks; the browser downloads the first block (containing the scene’s root nodes) instantly, presenting a rough but complete world. Background workers then fetch and decode nearby blocks on demand, refining the view as the user navigates.
To avoid GPU memory overflow, Spark reserves a fixed memory pool (e.g., 16 million points) and maps RAD blocks to virtual pages. A page‑table scheduler swaps out low‑priority pages and loads new ones, allowing multiple RAD files to share the same pool without exceeding the limit.
All of these components are built on top of Three.js and the WebGL2 standard, ensuring compatibility with iOS, Android, desktop browsers and even VR headsets that support a modern web browser.
Reference links: https://www.worldlabs.ai/blog/spark-2.0 https://github.com/sparkjsdev/spark/
SuanNi
A community for AI developers that aggregates large-model development services, models, and compute power.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
