Loading video...

Video Failed to Load

Go Home

Spark 2.0 is here! 🚀 We’re redefining what’s possible on the web with a streamable LoD system for 3D Gaussian Splatting. Built on Three.js, you can now stream massive 100M+ splat worlds to any device from mobile to VR using WebGL2. All open-source. Dive into the tech 👇

420,985 views • 6 months ago •via X (Twitter)

56 Comments

spark's profile picture
spark6 months ago

How do we render 100M+ splats in a browser? Spark 2.0 solves the scale challenge with three core systems: - Continuous LoD trees - Progressive .RAD streaming - GPU Virtual Memory paging Interactive demos in thread 🧵👇 Technical blog:

spark's profile picture
spark6 months ago

Learn about Spark: Experience the scale for yourself. Coit Tower consists of 40M+ splats, yet it’s fully interactive in your browser. The beauty of Spark LoD is seeing 100M+ splat worlds run smoothly on any device. Explore here:

spark's profile picture
spark6 months ago

Traditional 3D uses texture-mapped triangles to build surfaces. But to capture the real world, we need something more fluid. 3D Gaussian Splatting uses millions of semi-transparent ellipsoids that blend together to form hyper-realistic details. Demo:

spark's profile picture
spark6 months ago

What is a Splat? 📂 Each "splat" is defined by its position, XYZ scale, rotation, color, and opacity. We render them using the "painter's algorithm," sorting millions of these ellipsoids back-to-front in real-time. It’s like digital pointillism, but with 3D Gaussian profiles. 🎨 Demo:

spark's profile picture
spark6 months ago

Spark began as an internal @theworldlabs tool to solve the limits of existing web renderers. Most could only handle one object at a time and lacked dynamic animations. We built Spark on @threejs and WebGL2 so anyone can build interactive 3DGS experiences that work on every device. Lofi Worlds:

spark's profile picture
spark6 months ago

Secret Sauce 🥫 To build massive worlds, you have to join multiple 3DGS objects together. Spark uses a three-step algorithm to ensure they coexist in the same space without looking "pasted over" each other: 1. Generate a global list 2. Sort back-to-front 3. Render in one go Demo:

spark's profile picture
spark6 months ago

Spark features a programmable GPU pipeline for every splat. This unlocks real-time effects like SDF clipping, animated transitions, and 4DGS interpolation. We use a two-pass radix sort in a Web Worker to keep the main thread smooth, even with multiple viewpoints. Demo:

spark's profile picture
spark6 months ago

As 3DGS scenes grow to 10M+ splats, not to mention 100M+, they hit a wall: huge downloads and GPU memory caps on mobile. Spark 2.0 breaks this barrier. We use Level-of-Detail, Progressive Streaming, and Virtual Memory to render massive worlds on any device. Demo:

spark's profile picture
spark6 months ago

The Splat Tree 🌲 Spark 2.0 uses an LoD Splat Tree. Every splat exists in a hierarchy where parent nodes are lower-resolution merges of their children. The root is a single large splat representing the whole object. Spark traverses this tree to pick a "cut" that perfectly matches your viewpoint.

spark's profile picture
spark6 months ago

Performance Magic 🪄 Spark maintains a steady frame rate by computing "slices" through the LoD tree. By setting a budget (500K to 2.5M splats), we ensure a constant workload for the GPU regardless of scene size. You can trade detail for FPS in real-time to fit any device. Demo:

spark's profile picture
spark6 months ago

To keep the main loop smooth, Spark updates LoD updates asynchronously using Rust compiled to WebAssembly. We also use fixed foveated rendering to bias the splat budget toward the center of your view. More detail where you look, less where you don't. 🎯 Demo:

spark's profile picture
spark6 months ago

Spark includes two "training-free" algorithms to build these hierarchies: Tiny-LoD for fast, on-demand use in the browser, and Bhatt-LoD for high-quality offline processing using statistical shape similarity. No reference images needed—just raw 3DGS data. 📁 Demo:

spark's profile picture
spark6 months ago

Existing formats like .PLY and .SPZ aren't built for streaming. We developed .RAD: a spatially partitioned format that lets you see a 64K coarse version of a scene instantly while refining details as you move. Refinement happens in real-time, prioritized for your view. ⚡

spark's profile picture
spark6 months ago

The final piece: Spark adapts OS-level Virtual Memory to the GPU. We manage a 16M splat physical pool that swaps 64K "pages" of data in and out from .RAD files using an LRU eviction strategy. This is how we render infinite, composite worlds on a mobile device. Demo:

spark's profile picture
spark6 months ago

Spark 2.0 is a complete solution for streaming and rendering 3DGS worlds on the web. 🌍 With a programmable GPU engine, .RAD streaming, and virtual memory, we're making 100M+ splat scenes accessible to everyone, on any device. Start building today:

Fei-Fei Li's profile picture
Fei-Fei Li6 months ago

Spark 2.0 can now stream 100M+ splats on any device! So proud to contribute to the open source ecosystem of web-based 3DGS rendering!❤️‍🔥🌐

spark's profile picture
spark6 months ago

🌎🤩

Adam Chernick's profile picture
Adam Chernick6 months ago

THIS IS HUGE!! Great work to the whole team!

spark's profile picture
spark6 months ago

Thanks Adam! 🚀 Let us know what you build!

Rangesh 👓's profile picture
Rangesh 👓6 months ago

I am excited to build using this.

let ruslan ='s profile picture
let ruslan =6 months ago

What? Again? The second coming of 2.0? :)

spark's profile picture
spark6 months ago

Yes! 🤩 Developer preview is now fully public and updated on our website!

let ruslan ='s profile picture
let ruslan =6 months ago

<3

Joao Melo Rodrigues's profile picture
Joao Melo Rodrigues6 months ago

Incredible, you guys have been cooking! Already testing it at cyango 🥳

Gus Garza's profile picture
Gus Garza6 months ago

this is great congrats cant wait to try it out

spark's profile picture
spark6 months ago

Yes! feel free to also test out our examples page here!

Andres Hernandez's profile picture
Andres Hernandez6 months ago

looks crazy!@#!@

Benjamin Arnaud's profile picture
Benjamin Arnaud6 months ago

Congratulations for making this OpenSource !

Morgan | Alpha Hunter's profile picture
Morgan | Alpha Hunter6 months ago

wild stuff fr

Sync Kun's profile picture
Sync Kun6 months ago

W

Rohan's profile picture
Rohan6 months ago

Great work! This is pretty cool!

Yo.Town 3D's profile picture
Yo.Town 3D6 months ago

This is very helpful. Our 3D printing community has one more 3D modeling channel. Also, thank you for the open-source nature and making it compatible with WebGL. It’s very useful.

otman.ETH's profile picture
otman.ETH6 months ago

that’s unreal webgl2 finally getting its crown

Alex Castle's profile picture
Alex Castle6 months ago

Oh my god you guys are on another level

spark's profile picture
spark5 months ago

🤩🙏

ry's profile picture
ry5 months ago

somebody put new york city in this

spark's profile picture
spark5 months ago

🏙️🏙️🏙️🌎

sarmad 🇦🇺 ✨ 💻's profile picture
sarmad 🇦🇺 ✨ 💻6 months ago

Looks amazing! any reason for not using webgpu over webgl2?

Lara Frost's profile picture
Lara Frost6 months ago

100M+ splats to mobile is a serious engineering milestone. The implications for web-based space sims alone are huge. 🤩

Allan Dowdeswell's profile picture
Allan Dowdeswell6 months ago

Very nice. What would be the required or recommended server setup for the rad files?

Ai(n) Malcolm's profile picture
Ai(n) Malcolm6 months ago

very nice!

Joe Sparks's profile picture
Joe Sparks6 months ago

Cool name!

Savant 💮's profile picture
Savant 💮6 months ago

I've been waiting for this 😎

Wei Liu's profile picture
Wei Liu6 months ago

LoD streaming for 3D Gaussian Splatting on the web is a big step forward. Congrats to the team.

Tessala's profile picture
Tessala5 months ago

So metaverse not dead anymore?

Kobid Upadhyay's profile picture
Kobid Upadhyay5 months ago

The development on spark is very cool. The finer control over the splats made possible our product Looking forward to more updates in the future!

Tumb1eweed's profile picture
Tumb1eweed6 months ago

cool!

shuang^🍦's profile picture
shuang^🍦5 months ago

coooool

Yi Yeshu | XunZhi Tech's profile picture
Yi Yeshu | XunZhi Tech5 months ago

Spark 2.0 is a game changer! We use 3DGS + Three.js for real-time underground pipeline visualization — field photos to interactive 3D on any browser. The LoD streaming will be huge for our large-scale utility mapping scenes. Live viewer:

john 🤟 Lumiterra's profile picture
john 🤟 Lumiterra5 months ago

👀

----------'s profile picture
----------5 months ago

cool for static stuff, so what about animations

Leo Mozoloa's profile picture
Leo Mozoloa6 months ago

forgot the links my guy, can't dive into much rn

timger's profile picture
timger5 months ago

Built on Three.js

raja nazirul's profile picture
raja nazirul5 months ago

crazy how it can run smoothly using browser.

sketchasketch's profile picture
sketchasketch6 months ago

Yoo that’s pretty major! I gotta check this out!

Pierre Charpentier's profile picture
Pierre Charpentier5 months ago

Love the detailed technical explanation, however I don't understand why I'm having so many (and slow) pop-ins with my desktop PC setup. I'm at 400 Mbps download speed, i9-12900KF CPU + RTX 4090 GPU, and this is how it runs:

Related Videos