This is a major upgrade in which 90% of the code has been rewritten. In this version
we achieves:
![Teaser](/docs/source/_static/images/teaser.jpg?raw=true)
Links:
- Documentation: https://www.nerfacc.com/en/v0.5.0/
- ArXiv Report: Coming Soon.
Methodologies:
- Upgrade Occupancy Grid to support multiple levels.
- Support Proposal Network from Mip-NeRF 360.
- Update examples on unbounded scenes to use Multi-level Occupancy Grid or Proposal Network.
- Contraction for Occupancy Grid is no longer supported due to it's inefficiency for ray traversal.
API Changes:
- [Changed] `OccupancyGrid()` -> `OccGridEstimator()`.
- [Added] Argument `levels=1` for multi-level support.
- [Added] Function `self.sampling()` that does basically the same thing with the old `nerfacc.ray_marching`.
- [Renamed] Function `self.every_n_step()` -> `self.update_every_n_steps()`
- [Added] `PropNetEstimator()`. With functions `self.sampling()`, `self.update_every_n_steps()`
and `self.compute_loss()`.
- [Removed] `ray_marching()`. Ray marching is now implemented through calling `sampling()` of
the `OccGridEstimator()` / `PropNetEstimator()`.
- [Changed] `ray_aabb_intersect()` now supports multiple aabb, and supports new argument `near_plane`, `far_plane`, `miss_value`.
- [Changed] `render_*_from_*()`. The input shape changes from `(all_samples, 1)` to `(all_samples)`. And the function will returns all intermediate results so it might be a tuple.
- [Changed] `rendering()`. The input shape changes from `(all_samples, 1)` to `(all_samples)`, including the shape assumption for the `rgb_sigma_fn` and `rgb_alpha_fn`. Be aware of this shape change.
- [Changed] `accumulate_along_rays()`. The shape of the `weights` in the inputs should be `(all_samples)` now.
- [Removed] `unpack_info()`, `pack_data()`, `unpack_data()` are temporally removed due to in-compatibility
with the new backend implementation. Will add them back later.
- [Added] Some basic functions that support both batched tensor and flattened tensor: `inclusive_prod()`, `inclusive_sum()`, `exclusive_prod()`, `exclusive_sum()`, `importance_sampling()`, `searchsorted()`.
Examples & Benchmarks:
- More benchmarks and examples. See folder `examples/` and `benchmarks/`.