Skip to content

Releases: aras-p/UnityGaussianSplatting

v1.0.0: VR support

28 Nov 09:05
Compare
Choose a tag to compare

Virtual Reality (VR/XR/MR/AR) support is in!

While I have not tested any of that myself, @ninjamode contributed shader/script fixes needed for VR to work, and @b0nes164 did additional GPU sorting code fixes for GPUs in devices like Quest 3. All of that came in PR #146.

  • Reportedly works now: Quest 3, Quest Pro, HTC Vive, Varjo Aero.
  • Does not work: Apple Vision Pro, probably others that lack single-pass instanced rendering.

Besides this, nothing else really changed; the version bump from 0.9 to 1.0 makes it sound like a larger release than it actually is :)

v0.9.1: minor fixes

23 Sep 11:55
Compare
Choose a tag to compare
  • Fix issue in GPU sorting that could affect some GPUs (#95, by @b0nes164)
  • Fix issue when total number of splats is "multiple of 256, plus one"
  • Fix mismatched package.json version, preventing package from appearing in OpenUPM (#134)

v0.9.0: more editing tools, merge, apply transform, faster GPU sort

19 Feb 08:36
Compare
Choose a tag to compare

Editing (#51):

  • Splat editing tools are now the Unity "editor tool context" thing (blob looking icon atop of regular tools toolbar).
  • Can now move individual selected splats.
    image
  • When multiple splat objects are selected, they can be merged into one larger splat cloud.
  • Add "Reset" button to revert edits back to asset state.

Export:

  • Option to "bake" (i.e. apply) whole object transformation into the exported PLY file. This included proper rotation of Spherical Harmonics data.

Rendering:

  • Faster GPU sorting routine, AMD FidelityFX 4-bit radix sort was changed to "reduce-then-scan" 8-bit radix sort (contributed in #82 by @b0nes164, thanks!). On RTX 3080Ti, sorting 6.1 million splats goes from 2.4ms down to 1.1ms.
  • Add option to visualize only the spherical harmonics contribution, without regular color.

⚠️ Note: splat asset format has changed, need to re-create the splat assets.

v0.8.0: selection subtract, inverted cutouts, package, URP/HDRP samples

09 Nov 08:43
Compare
Choose a tag to compare
  • Editing: rectangle splat selection can now subtract from selection while Ctrl key is pressed (thx @JasonDeacutis).
  • Editing: cutouts got an option to "invert" their logic, i.e. remove splats inside their area, instead of leaving splats inside their area.
  • Project structure has been reorganized into a Unity package org.nesnausk.gaussian-splatting under package folder, and three sample projects under projects folder, one each for Built-in, URP and HDRP rendering pipelines.
  • Fix: scripts were not compiling when URP or HDRP was used, lol.
  • Fix: splats don't try to render themselves into any material preview under URP.

v0.7.0: faster rendering and cutout objects

14 Oct 18:22
Compare
Choose a tag to compare
  • Performance: Rendering is faster (#28), e.g. a 6 million splat "bicycle" scene on M1 Mac goes 31.8ms -> 23.6ms. This is still using a traditional "render each splat as a quad" rasterizer, but each quad is smaller and more tightly bounds the splat.
  • Editing: In addition to manual selection & deletion of splats, you can also place "Cutout" objects in ellipsoid or box shape (#31). Thanks @hybridherbst for the initial implementation!
  • Fix: improved robustness or PLY loading & exporting (#30)
  • UX: more recent entries shown in PLY file picker UI widget
  • Clarified license (MIT)

274864219-b68f6836-8b1f-4cbf-b68f-07bfb71ec145

v0.6.0: simple "editing" tools for splat cleanup

06 Oct 19:25
a7f88bd
Compare
Choose a tag to compare

This release brings rudimentary "splat editing" tools, mostly intended to remove unwanted / unneeded splat areas.

A new scene view tool shows up in the scene toolbar whenever a GS object is selected. It allows to do rectangle-drag selection, similar to regular Unity scene view (drag replaces selection, shift+drag adds to selection). Select All, Invert Selection shortcuts work. Delete / Backspace deletes the selected splats. "F" key to frame focuses on current selection.

When the GS object is "edited", there's a button in Inspector to export the edited result back into a gaussian splat PLY file.

Short video of all of this: https://www.youtube.com/watch?v=MKIGtEIjRi0

Other minor things:

  • Selected splat asset quality preset and output folder is persisted in preferences.
  • Nicer naming of generated splat assets.

v0.5.0: revert PLY workflow lol! also fix player builds and other fixes

04 Oct 18:07
Compare
Choose a tag to compare

Previous release (v0.4.0) changed workflow to have a custom PLY importer, so you could just drop your gaussian splat file into Unity project and be done with it. Turns out, that does not work so well when there's some other package in the same project that wants to import PLY files (e.g. keijiro/Pcx), #15. So now we're back to having a menu item Tools/Gaussian Splats/Create GaussianSplatAsset. 😓

Other things in this release:

  • Guard against splats occasionally "exploding" over whole screen due to degenerate covariance matrix (thx @pastasfuture)
  • Fixed player builds, editor-only code was not properly excluded from them (thx @francescofugazzi)
  • High Quality preset is actually lossless now, i.e. keeps everything in full 32-bit floats. It's slow and large, but useful if someday I'll build some sort of "export gaussian splat back" utilities.

v0.4.0: URP/HDRP support, easier PLY workflow, smaller chunk info

01 Oct 19:54
602ab5c
Compare
Choose a tag to compare
  • Change/UX: no more custom "create asset" window; just drop your gaussian splat .ply file into the unity project. Now this uses a custom ply importer to create all data.
  • In addition to built-in render pipeline, both URP and HDRP render pipelines should now work too.
    • URP: add GaussianSplatURPFeature to the URP renderer settings.
    • HDRP: add CustomPass volume object and a GaussianSplatHDRPPass entry to it. Maybe also set injection
      point to "after postprocess" to stop auto-exposure from going wild.
  • Multiple gaussian splat objects in the scene now interact better. Previously they were rendered in arbitrary order, making one of them be wrongly "in front" of another. Now the rendering is not correct if they overlap a lot, but at least they are roughly in correct order.
  • Change: removed DX11 support; on Windows this now requires DX12 or Vulkan.
  • Size: slightly more compact per-chunk info in the generated asset data, saved some size especially at low quality levels.

v0.3.0: data size reductions via SH clustering

27 Sep 18:28
4ad65d5
Compare
Choose a tag to compare

See "Making Gaussian Splats more smaller" blog post for details/images. Largest change is that at low quality levels, spherical harmonics data now does vector quantization / clustering for large space savings.

  • Change: asset format has changed, you will have to re-create the gaussian splat assets.
  • Size: "Very High" quality level is now ~2x smaller than gaussian splat PLY file (was larger than PLY file previously), at virtually no quality loss.
  • Size: "Low" quality level is now smaller than before (12.2x -> 14.9x size reduction), and slightly better quality.
  • Size: "Very Low" quality level is not complete garbage now. Size about the same (18x reduction), but quality PSNR increased from ~24 to ~32.
  • UX: asset creation window now displays data sizes for individual components (position, color, SH etc.)

v0.2.0: splat asset, faster sort, smaller data

27 Sep 13:21
Compare
Choose a tag to compare

See "Making Gaussian Splats smaller" blog post for details/images.

  • Change: no longer reads the splat .ply file directly, rather use "create gaussian splat asset" wizard to create the asset.
  • Feature: splat asset creation can now pick various options between file size & fidelity. Up to 10x smaller data sizes still look okay.
  • Feature: splat rendering now respects the depth buffer, i.e. regular 3D unity objects can be "in the scene".
  • Feature: splat rendering now respects object transform, can tilt/mirror the splat object to better align with usual orientation.
  • Perf: use AMD FidelityFX based sorting on suitable platforms (DX12, Metal, Vulkan), which is several times faster than previous sorting routine.
  • Perf: some optimizations to make rendering faster, esp. on Mac. This is still a regular "render splats like particles" renderer though.
  • UX: splats now render without entering play mode.
  • UX: source splat directory picker has dropdown for 10 previously used locations.
  • Debug: various splat rendering modes (render as points, etc.)