any chance this will support the video style 3d gaussian splats?
Yes. We have demos working already. Those 3D gaussian videos (or 4D that some people call) are really big so we're figuring out what's the best way to distribute and make it a great experience.
Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js
51–60 of 90 posts
Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js
#52This is cool also BabylonJS has nice gaussian splat support as well: https://doc.babylonjs.com/features/featuresDeepDive/mesh/gau...
BabylonJS and the OP's own Aframe [1] seem to have similar licenses, similar number of Github stars and forks, although Aframe seems newer and more game / VR focused. How do Babylon, Aframe, Three.js, and PlayCanvas [2] compare from those that have used them? IIUC, PlayCanvas is the most mature, featureful, and performant, but it's commercial. Babylon is the featureful 3D engine, whereas Three.js is fairly raw. Thoug…
PlayCanvas Engine: https://github.com/playcanvas/engine
PlayCanvas Web Components: https://github.com/playcanvas/web-components
PlayCanvas React: https://github.com/playcanvas/react
Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js
#53Earlier quoted context omitted.
BabylonJS and the OP's own Aframe [1] seem to have similar licenses, similar number of Github stars and forks, although Aframe seems newer and more game / VR focused. How do Babylon, Aframe, Three.js, and PlayCanvas [2] compare from those that have used them? IIUC, PlayCanvas is the most mature, featureful, and performant, but it's commercial. Babylon is the featureful 3D engine, whereas Three.js is fairly raw. Thoug…
A-Frame is an entity component system on top of THREE.js that uses the DOM as a declarative layer for the scene graph. It can be manipulated using the standard APIs and tools that Web developers are used to. Initial target was onboarding Web devs into 3D but found success beyond. The super low barrier of entry (hello world below) without sacrificing functionality made it very popular for people learning programming /…
Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js
#54Earlier quoted context omitted.
BabylonJS and the OP's own Aframe [1] seem to have similar licenses, similar number of Github stars and forks, although Aframe seems newer and more game / VR focused. How do Babylon, Aframe, Three.js, and PlayCanvas [2] compare from those that have used them? IIUC, PlayCanvas is the most mature, featureful, and performant, but it's commercial. Babylon is the featureful 3D engine, whereas Three.js is fairly raw. Thoug…
Did a test study in BabylonJS, and generally the subset of compatible features is browser specific. The good: 1. Blender plugin for baked mesh animation export to stream asset is cool 2. the procedural texture tricks combined with displacement maps mean making reasonable looking in game ocean/water possible with some tweaking 3. adding 2D sprite swap out for distant objects is trivial (think Paper Mario style) The ba…
Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js
#55Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js
#56How do you do the rendering? Is it sorted (radix?) instances? Do you amortize the sorting over a couple frames? Or use some bin sorting? Are you happy with the performance?
On most newer devices the sorting can happen pretty much every frame with approx 1 frame latency, and runs in parallel on a Web Worker. So the sorting itself has minimal performance impact, and because of that Spark can do fully dynamic 3DGS where every splat can move independently each frame!
On some older Android devices it can be a few frames worth of latency, and in that case you could say it's amortized over a few frames. But since it all happens in parallel there's no real impact to the overall rendering performance. I expect for most devices the sorting in Spark is mostly a solved problem, especially with increasing memory bandwidth and shared CPU-GPU memory.
Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js
#57Earlier quoted context omitted.
Yes. We have demos working already. Those 3D gaussian videos (or 4D that some people call) are really big so we're figuring out what's the best way to distribute and make it a great experience.
great to hear as a note, how the heck do they record them is it literally multiple camera points recording many videos and then synced?
Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js
#58The demos look great! I imagine it's not pure javascript. Are you using webgpu?
The WebGL API is based on the OpenGL ES standard, which jettisoned a lot of the procedural pipeline calls that made it easy to write CPU-bound 3D logic. The tradeoff is initial complexity (your "hello world" for WebGL showing one object will include a shader and priming data arrays for that shader), but as consequence of design the API sort of forces more computation into the GPU layer, so the fact JavaScript is driv…
WebGL2 isn't the best graphics API, but it allows anyone to write Javascript code to harness the GPU for compute and rendering, and run on pretty much any device via the web browser. That's pretty amazing IMO!
Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js
#59How do you do the rendering? Is it sorted (radix?) instances? Do you amortize the sorting over a couple frames? Or use some bin sorting? Are you happy with the performance?
Yes, Spark does instanced rendering of quads, one covering each Gaussian splat. The sorting is done by 1) calculating sort distance for every splat on the GPU, 2) reading it back to the CPU as float16s, 3) doing a 1-pass bucket sort to get an ordering of all the splats from back to front. On most newer devices the sorting can happen pretty much every frame with approx 1 frame latency, and runs in parallel on a Web Wo…
I've implemented a radix sort on GPU to sort the splats (every frame).. and I'm not quite happy with performance yet. A radix sort (+ prefix scan) is quite involved with lot's of dedicated hierarchical compute shaders.. I might have to get back to tune it.
I might switch to float16s as well, I'm a bit hesitant, as 1 million+ splats, may exceed the precision of halfs.
Re: Show HN: Spark, An advanced 3D Gaussian Splatting renderer for Three.js
#60Earlier quoted context omitted.
Yes, Spark does instanced rendering of quads, one covering each Gaussian splat. The sorting is done by 1) calculating sort distance for every splat on the GPU, 2) reading it back to the CPU as float16s, 3) doing a 1-pass bucket sort to get an ordering of all the splats from back to front. On most newer devices the sorting can happen pretty much every frame with approx 1 frame latency, and runs in parallel on a Web Wo…
If you say 1 pass bucket sorting.. I assume you do sort the buckets as well? I've implemented a radix sort on GPU to sort the splats (every frame).. and I'm not quite happy with performance yet. A radix sort (+ prefix scan) is quite involved with lot's of dedicated hierarchical compute shaders.. I might have to get back to tune it. I might switch to float16s as well, I'm a bit hesitant, as 1 million+ splats, may exce…