the question about 3dgs renderer client
i want to know why you don't use (sparkjs)[https://sparkjs.dev/], it directly render the spz file and don't need backend service to transfer the spz to buffer.
i see you just write whole renderer code in the web client.
Hi @JasonTu999!
This is just because we started adding 3DGS support in October 2023 (#110); Spark was released much more recently (June 2025). In between there were other external libraries that added splatting support (notably drei's <Splat />, Luma's LumaSplatsThree) but we weren't fully satisfied with them. It was easier to just iterate on our own implementation, especially since existing open-source projects meant we weren't starting from scratch:
https://github.com/nerfstudio-project/viser/blob/c11782c706978836da3653666c700e74b095acae/src/viser/client/src/Splatting/GaussianSplats.tsx#L3-L8
I haven't tried Spark personally but my guess is it makes sense to move to it at some point:
- Nice to have less code to maintain. The Spark maintainers are also probably more competent than we are at writing these kinds of renderers/shaders 🙂
- The features we cared about the most like compositing for multiple objects (example) are pretty stable now, though. And it's been nice to have hackable rendering code to adapt (for example, for these 4D gaussian examples). So if we switch to Spark at some point it'd most likely be for some concrete feature that they have implemented that we don't.