AcademySoftwareFoundation / AcademySoftwareFoundation/openvdb
[REQUEST] NanoVDB 32.3 Deprecated getNode methods
- Dominant language
- C++
- Stars
- 3.4k
- Forks
- 774
- Avg merge
- 3d 9h
- Merged PRs (30d)
- 34
Description
### Is your feature request related to a problem? Please describe.
Hi, I was using the ```NodeT* Tree::getNode(uint32_t i)``` method to get the leaf nodes and set the value in a CUDA kernel but NanoVDB 32.3 has deprecated the methods. As far as I can see they are replaced by ```getFirstNode```.
My volume build kernel does something like ```LeafT* leaf = const_cast(grid->tree().getNode<0>(idx >> 9));``` to get the leaf node. I was wondering if there is an alternative way now using the firstNode in the tree level. I want to move to 32.3 to be able to use the ```inline __hostdev__ bool firstActive(RayT& ray, AccT& acc, Coord &ijk, float& t)``` method in HDDA.
### Describe the solution you'd like
A convenience function similar to getNode that takes an index would solve my issue
### Describe alternatives you've considered
I've tried to reach the leaf nodes by getting the first node and incrementing the pointer. This is working to some extent but leaving some leaf nodes unchanged.
### Additional context
Currently, I'm at NanoVDB version 29.3.
Contributor guide
Research direction
Start by comparing the deprecated Tree::getNode access used in the CUDA volume-build kernel with getFirstNode at each tree level, and review how HDDA's firstActive method is intended to be used. Done means providing an indexed convenience function or documenting the supported replacement so every leaf node can be reached and updated reliably.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- computer-graphics
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100