Skip to content

v2.0.0: Direct PLY/SPZ loading, global sorting, stochastic render, removed edits/cutouts

Latest

Choose a tag to compare

@aras-p aras-p released this 02 Nov 15:59

Against my better judgement, here's a "everything's changed!" release. Originally this repository was made to play around with some simple forms of 3DGS in-memory compression, where I explored a chunked splat layout, possibility of using e.g. BC7 texture compression for data, and so on. That was interesting, but it seems that most people who use this are only interested in "I just want to render splats inside unity" aspect. Later on I wanted to play around with things like stochastic transparency (#174), but never took the plunge to finish it. So this release reshuffles things around in a major way, hence 2.0.0 version.

Note that like all this time, I have exactly zero VR/XR devices around, so these code paths could have broken in the process. I tried not to, but who knows!

  • No more "create gaussian asset" workflow; instead you just drop and use your 3DGS .ply or .spz files directly.
    • While at it, add SPZ 4 support (the one where data streams are zstd-compressed).
    • Support loading from files relative to StreamingAssets, filesystem (relative or absolute paths), or from URLs.
  • Removed all the splat editing tools; these days using something like SuperSplat Editor is much easier and they have more & better tools.
  • Global sorting: multiple intersecting splat objects now render correctly in the sorted/blended case too. Previously multiple overlapping splats did not quite sort correctly among themselves:
    shot-multiple-a-main
    whereas now they do:
    shot-multiple-b-v2
  • Splat rendering options are not per-splat anymore, but rather global to the scene. Do that by adding GaussianSplatRenderingOptions component to any game object.
    shot-options-ui
  • In addition to the traditional "sort the splats and alpha blend them", add an option for stochastic rendering, which needs no sorting. It can use a simple temporal/reprojection filter. Without any temporal filtering it is quite noisy:
    shot-multiple-c-v2-stochastic1
    but with more frames it gets less noisy:
    shot-multiple-c-v2-stochastic2
    and eventually more or less converges to regular result:
    shot-multiple-c-v2-stochastic3
  • Removed some debug rendering options (the only left is "Draw Points"), removed option to sort only every Nth frame.
  • Runtime VRAM/memory usage is similar to previous "Medium" quality (about 104 bytes/splat), with a tiny bit higher data precision. Performance is similar as well.
  • Compile error and warning fixes for Unity 6.0, 6.3, 6.6, 7.0 alpha.

Full Changelog: v1.1.2...v2.0.0