AcademySoftwareFoundation / AcademySoftwareFoundation/openvdb

[REQUEST] NanoVDB 32.3 Deprecated getNode methods

Open
#1,150 2 comments 0 reactions 0 assignees View on GitHub
enhancement nanovdb
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.