Skip to content

Release v0.4.0

Latest

Choose a tag to compare

@swahtz swahtz released this 14 Mar 02:52
· 19 commits to main since this release
v0.4.0
b94d1c9

Released: March 14, 2026
Full Changelog: v0.3.0...v0.4.0


New Features

  • Markov Chain Monte Carlo (MCMC) Gaussian splat optimizer -- Added a new MCMC-based optimizer for Gaussian splatting, providing an alternative optimization strategy. (#214) -- @fwilliams

  • Sparse depth regularization -- Added simple L1 loss on sparse depth during Gaussian splat training, improving geometric accuracy of reconstructions. (#188) -- @fwilliams

  • OpenCLIP foundation model -- Added OpenCLIP as a new foundation model for open-vocabulary feature extraction. (#231) -- @swahtz

  • SAM2 multi-scale mask generation -- Added multi-scale mask generation support to the SAM2 foundation model, enabling hierarchical segmentation. (#239) -- @swahtz

  • SAM1 foundation model -- Added Segment Anything Model (SAM1) as a foundation model integration. (#242) -- @swahtz

  • Extensible custom attribute system for SfmScene -- Introduced a flexible system for attaching custom attributes to SfM scenes. (#245) -- @fwilliams

  • SfM mask downsampling and caching -- Masks are now downsampled alongside images and cached for faster subsequent runs. (#219) -- @diz-vara

  • aarch64 (ARM) platform support -- Added a workaround for aarch64 platforms where usd-core binaries are unavailable, using usd-exchange as a fallback. (#190) -- @matthewdcong

Performance Improvements

  • Morton ordering for spatial locality -- Gaussian splats are now reordered using Morton (Z-order) curves to improve memory access patterns and cache efficiency during training. (#233) -- @matthewdcong

  • Optimized Gaussian splat optimizer via parameter broadcasting -- Appended parameters in the optimizer are now broadcast rather than individually set, reducing overhead during densification. (#248) -- @matthewdcong

  • Checkpoint restart performance -- Fixed a major performance issue where resuming from a checkpoint caused the full dataset to be loaded from disk for all previously-trained steps. The fix iterates over the sampler instead of the dataloader, saving hours on large datasets. Also restored deterministic minibatch ordering on restart via proper RNG seed initialization. (#159) -- @matthewdcong

  • Dynamic dataloader worker count -- Replaced hard-coded num_workers with os.cpu_count() to better utilize available hardware. (#171) -- @harrism

Bug Fixes

  • Fixed cache path nesting on checkpoint resume -- Resuming from a checkpoint no longer creates progressively deeper nested cache directories (_cache/cache_1/cache_1/cache_1/...). (#202) -- @matthewdcong

  • Fixed SfmCameraMetadata distortion downsampling -- Corrected distortion parameter handling when downsampling camera metadata. (#228) -- @swahtz

  • Fixed COLMAP images text loading -- Resolved bugs in the COLMAP text-format image parser. (#177) -- @NotMorven

  • Fixed empty point_indices handling -- Empty image.point_indices are now correctly treated as absent rather than causing errors. (#220) -- @diz-vara

  • Fixed GSplat config parameter passthrough -- GSplat config parameters are now correctly forwarded to simple_trainer.py. (#236) -- @harrism

  • Fixed training_images NameError in GSplat -- Resolved a NameError in run_gsplat_training.py. (#247) -- @harrism

  • Improved progress bar accuracy on checkpoint resume -- The progress bar no longer includes sampler fast-forward time in its ETA estimates after resuming. (#166) -- @matthewdcong

Benchmarking & CI

  • Nightly 3DGS unit benchmarks -- Added a GitHub Actions workflow for nightly regression testing of Gaussian splatting performance, with S3-based checkpoint management. (#164) -- @harrism

  • Nightly comparative benchmarks (fVDB vs GSplat) -- Added automated nightly comparison benchmarks between fVDB and GSplat implementations. (#240) -- @harrism

  • Throughput and time-series metric plots -- Comparison benchmarks now generate throughput (splats/s) plots and time-series training metric visualizations. (#168, #227) -- @harrism

  • Smart nightly skip -- Nightly benchmarks are skipped when there are no new commits, completing in seconds instead of minutes. (#173) -- @harrism

  • Publish workflow -- Added automated release build and validation CI pipeline with support for Rocky Linux 8 containers, uv-based Python installation, and wheel validation. (#258, #259, #263, #265) -- @harrism, @swahtz

  • Multiple CI stability fixes for benchmark workflows, fork handling, and runner token configuration. (#169, #209, #212, #229, #232, #234)

Documentation & Project

  • NVIDIA branding -- Updated project branding. (#217) -- @fwilliams

  • AGENTS.md -- Added AI agent guidance for contributing to the project. (#238) -- @harrism

  • Fixed typo in sensor data loading tutorial. (#174) -- @eh-dub

  • Docs cleanup: removed stale _Cpp references, added Google Analytics, updated demo notebook for viewer scene reset. (#160, #161, #158)

New Contributors