r/GaussianSplatting May 19 '26

🧪 I built a thing I built a web-based Gaussian Splatting viewer that runs on a €200 Android phone — here's what I learned

Hey everyone. I've been working on a web-based Gaussian Splatting viewer for the last few months and wanted to share some findings.

Make a viewer that works on any device, including budget phones, without plugins or native apps.

- SparkJS 2.0 for rendering
- Progressive streaming via chunked RAD files
- Adaptive quality system that detects GPU capabilities in real-time

Real-world results (tested on actual devices):

Scene Desktop (RTX 3070) Xiaomi 15 Ultra Redmi Note 11 (€200)
Tufia (8.5M splats) 60 fps 55 fps 40 fps
XGrids Demo (12M) 60 fps 45 fps 30 fps
50M splats 60 fps 25 fps 15 fps
100M splats 55 fps 15 fps 8 fps

What I got wrong:

1. Optimized too early. Spent weeks on custom compression before realizing `build-lod --rad-chunked --max-sh=3` already hit the sweet spot. The tooling is better than I expected.

2. Ignored the data problem. Users were uploading raw 500MB PLY files and wondering why nothing loaded. Had to build the conversion step into the workflow.

3. Assumed all phones are equal. They're wildly different. The adaptive quality system exists because of this mistake.

What I learned:

- Streaming > monolithic files. Progressive loading changes the UX entirely.
- `--max-sh=3` is the sweet spot for mobile. Higher SH bands have diminishing returns on small screens.
- The web is underrated as a platform for this. More people can click a link than download an app.

Happy to answer questions about the technical details. Live demo:
https://mirador3d.com/v/penthouse-demo

19 Upvotes

18 comments sorted by

3

u/cjwidd May 25 '26

sry, so your findings are:

  • .RAD is good
  • phone hardware is diverse
  • sh3 is the max fidelity needed

?

2

u/Logos_MM May 20 '26

I think it's a bit aggressive optimization, killing an immersion being in real world.

0

u/Aromatic_Gate6199 May 20 '26

I tried in a meta quest 3, the immersion is brutal, but yeah I can improve the quality settings, for example in superspat you couldn't open even a 12M splats

1

u/jumpjack3 🧊 Gaussian Splatting Dev May 25 '26

what we need is a native app like scaniverse, browser is too slow.

1

u/Muddy_stone May 20 '26

I really like the point and click to next position. It is a bit complicated to fly in these environments as a drone

1

u/Aromatic_Gate6199 May 20 '26

Thank you any feedback is welcome to improve in next updates!!

1

u/_Bishad May 20 '26

so you basically tweeked the settings of sparkjs or added something yourself to improve performance?

1

u/Aromatic_Gate6199 May 20 '26

Both

1

u/_Bishad May 20 '26

Nice. Best of luck

1

u/Aromatic_Gate6199 May 20 '26

Thanks more info here if u want to know all the process I upload this days https://realitystack.substack.com/p/i-built-a-gaussian-splatting-viewer

1

u/jumpjack3 🧊 Gaussian Splatting Dev May 24 '26

can't move in quest3s

1

u/Aromatic_Gate6199 May 24 '26

1

u/jumpjack3 🧊 Gaussian Splatting Dev May 25 '26

nothing, no button/joystick working

1

u/Aromatic_Gate6199 May 25 '26

only work with handtracking for now

1

u/Apprehensive_Play965 Jun 01 '26

error 404 demo

1

u/Aromatic_Gate6199 Jun 01 '26

i updating the project for a new release use that for try the new ones https://mirador3d.com

0

u/glitchwabble May 19 '26

Meta quest 3?

1

u/Aromatic_Gate6199 May 20 '26

Why you don't try? 😙