Releases: aras-p/UnityGaussianSplatting
v0.9.1: minor fixes
v0.9.0: more editing tools, merge, apply transform, faster GPU sort
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.
- 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.
v0.8.0: selection subtract, inverted cutouts, package, URP/HDRP samples
- 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
underpackage
folder, and three sample projects underprojects
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
- 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)
v0.6.0: simple "editing" tools for splat cleanup
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
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
- 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
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
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.)
v0.1.0: initial toy
Initial toy! See blog post.