OpenVDB  12.0.0
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
Tree< RootT > Class Template Reference

VDB Tree, which is a thin wrapper around a RootNode. More...

#include <nanovdb/NanoVDB.h>

Inherits TreeData.

Public Types

using DataType = TreeData
 
using RootType = RootT
 
using RootNodeType = RootT
 
using UpperNodeType = typename RootNodeType::ChildNodeType
 
using LowerNodeType = typename UpperNodeType::ChildNodeType
 
using LeafNodeType = typename RootType::LeafNodeType
 
using ValueType = typename RootT::ValueType
 
using BuildType = typename RootT::BuildType
 
using CoordType = typename RootT::CoordType
 
using AccessorType = DefaultReadAccessor< BuildType >
 
using Node3 = RootT
 
using Node2 = typename RootT::ChildNodeType
 
using Node1 = typename Node2::ChildNodeType
 
using Node0 = LeafNodeType
 

Public Member Functions

 Tree ()=delete
 This class cannot be constructed or deleted. More...
 
 Tree (const Tree &)=delete
 
Treeoperator= (const Tree &)=delete
 
 ~Tree ()=delete
 
__hostdev__ DataTypedata ()
 
__hostdev__ const DataTypedata () const
 
__hostdev__ RootT & root ()
 
__hostdev__ const RootT & root () const
 
__hostdev__ AccessorType getAccessor () const
 
__hostdev__ ValueType getValue (const CoordType &ijk) const
 Return the value of the given voxel (regardless of state or location in the tree.) More...
 
__hostdev__ ValueType getValue (int i, int j, int k) const
 
__hostdev__ bool isActive (const CoordType &ijk) const
 Return the active state of the given voxel (regardless of state or location in the tree.) More...
 
__hostdev__ bool probeValue (const CoordType &ijk, ValueType &v) const
 Return true if this tree is empty, i.e. contains no values or nodes. More...
 
__hostdev__ const ValueTypebackground () const
 Return a const reference to the background value. More...
 
__hostdev__ void extrema (ValueType &min, ValueType &max) const
 Sets the extrema values of all the active values in this tree, i.e. in all nodes of the tree. More...
 
__hostdev__ uint64_t activeVoxelCount () const
 Return a const reference to the index bounding box of all the active values in this tree, i.e. in all nodes of the tree. More...
 
__hostdev__ const uint32_t & activeTileCount (uint32_t level) const
 Return the total number of active tiles at the specified level of the tree. More...
 
template<typename NodeT >
__hostdev__ uint32_t nodeCount () const
 
__hostdev__ uint32_t nodeCount (int level) const
 
__hostdev__ uint32_t totalNodeCount () const
 
template<typename NodeT >
__hostdev__ NodeT * getFirstNode ()
 return a pointer to the first node of the specified type More...
 
template<typename NodeT >
__hostdev__ const NodeT * getFirstNode () const
 return a const pointer to the first node of the specified type More...
 
template<int LEVEL>
__hostdev__ NodeTrait< RootT, LEVEL >::type * getFirstNode ()
 return a pointer to the first node at the specified level More...
 
template<int LEVEL>
__hostdev__ const NodeTrait< RootT, LEVEL >::type * getFirstNode () const
 return a const pointer to the first node of the specified level More...
 
__hostdev__ LeafNodeTypegetFirstLeaf ()
 Template specializations of getFirstNode. More...
 
__hostdev__ const LeafNodeTypegetFirstLeaf () const
 
__hostdev__ NodeTrait< RootT, 1 >::type * getFirstLower ()
 
__hostdev__ const NodeTrait< RootT, 1 >::type * getFirstLower () const
 
__hostdev__ NodeTrait< RootT, 2 >::type * getFirstUpper ()
 
__hostdev__ const NodeTrait< RootT, 2 >::type * getFirstUpper () const
 
template<typename OpT , typename... ArgsT>
__hostdev__ auto get (const CoordType &ijk, ArgsT &&...args) const
 
template<typename OpT , typename... ArgsT>
__hostdev__ auto set (const CoordType &ijk, ArgsT &&...args)
 
__hostdev__ void setRoot (const void *root)
 
__hostdev__ void * getRoot ()
 Get a non-const void pointer to the root node (never NULL) More...
 
__hostdev__ const void * getRoot () const
 Get a const void pointer to the root node (never NULL) More...
 
template<typename NodeT >
__hostdev__ void setFirstNode (const NodeT *node)
 
__hostdev__ bool isEmpty () const
 Return true if the root is empty, i.e. has not child nodes or constant tiles. More...
 
__hostdev__ CoordBBox bbox () const
 Return the index bounding box of all the active values in this tree, i.e. in all nodes of the tree. More...
 
__hostdev__ bool isRootNext () const
 return true if RootData is layout out immediately after TreeData in memory More...
 

Static Public Member Functions

static __hostdev__ uint64_t memUsage ()
 return memory usage in bytes for the class More...
 

Public Attributes

int64_t mNodeOffset [4]
 
uint32_t mNodeCount [3]
 
uint32_t mTileCount [3]
 
uint64_t mVoxelCount
 

Detailed Description

template<typename RootT>
class nanovdb::Tree< RootT >

VDB Tree, which is a thin wrapper around a RootNode.

Member Typedef Documentation

using BuildType = typename RootT::BuildType
using CoordType = typename RootT::CoordType
using DataType = TreeData
using LeafNodeType = typename RootType::LeafNodeType
using LowerNodeType = typename UpperNodeType::ChildNodeType
using Node1 = typename Node2::ChildNodeType
using Node2 = typename RootT::ChildNodeType
using Node3 = RootT
using RootNodeType = RootT
using RootType = RootT
using UpperNodeType = typename RootNodeType::ChildNodeType
using ValueType = typename RootT::ValueType

Constructor & Destructor Documentation

Tree ( )
delete

This class cannot be constructed or deleted.

Tree ( const Tree< RootT > &  )
delete
~Tree ( )
delete

Member Function Documentation

__hostdev__ const uint32_t& activeTileCount ( uint32_t  level) const
inline

Return the total number of active tiles at the specified level of the tree.

level = 1,2,3 corresponds to active tile count in lower internal nodes, upper internal nodes, and the root level. Note active values at the leaf level are referred to as active voxels (see activeVoxelCount defined above).

__hostdev__ uint64_t activeVoxelCount ( ) const
inline

Return a const reference to the index bounding box of all the active values in this tree, i.e. in all nodes of the tree.

Return the total number of active voxels in this tree.

__hostdev__ const ValueType& background ( ) const
inline

Return a const reference to the background value.

__hostdev__ CoordBBox bbox ( ) const
inlineinherited

Return the index bounding box of all the active values in this tree, i.e. in all nodes of the tree.

__hostdev__ DataType* data ( )
inline
__hostdev__ const DataType* data ( ) const
inline
__hostdev__ void extrema ( ValueType min,
ValueType max 
) const

Sets the extrema values of all the active values in this tree, i.e. in all nodes of the tree.

__hostdev__ auto get ( const CoordType ijk,
ArgsT &&...  args 
) const
inline
__hostdev__ AccessorType getAccessor ( ) const
inline
__hostdev__ LeafNodeType* getFirstLeaf ( )
inline

Template specializations of getFirstNode.

__hostdev__ const LeafNodeType* getFirstLeaf ( ) const
inline
__hostdev__ NodeTrait<RootT, 1>::type* getFirstLower ( )
inline
__hostdev__ const NodeTrait<RootT, 1>::type* getFirstLower ( ) const
inline
__hostdev__ NodeT* getFirstNode ( )
inline

return a pointer to the first node of the specified type

Warning
Note it may return NULL if no nodes exist
__hostdev__ const NodeT* getFirstNode ( ) const
inline

return a const pointer to the first node of the specified type

Warning
Note it may return NULL if no nodes exist
__hostdev__ NodeTrait<RootT, LEVEL>::type* getFirstNode ( )
inline

return a pointer to the first node at the specified level

Warning
Note it may return NULL if no nodes exist
__hostdev__ const NodeTrait<RootT, LEVEL>::type* getFirstNode ( ) const
inline

return a const pointer to the first node of the specified level

Warning
Note it may return NULL if no nodes exist
__hostdev__ NodeTrait<RootT, 2>::type* getFirstUpper ( )
inline
__hostdev__ const NodeTrait<RootT, 2>::type* getFirstUpper ( ) const
inline
__hostdev__ void* getRoot ( )
inlineinherited

Get a non-const void pointer to the root node (never NULL)

__hostdev__ const void* getRoot ( ) const
inlineinherited

Get a const void pointer to the root node (never NULL)

__hostdev__ ValueType getValue ( const CoordType ijk) const
inline

Return the value of the given voxel (regardless of state or location in the tree.)

__hostdev__ ValueType getValue ( int  i,
int  j,
int  k 
) const
inline
__hostdev__ bool isActive ( const CoordType ijk) const
inline

Return the active state of the given voxel (regardless of state or location in the tree.)

__hostdev__ bool isEmpty ( ) const
inlineinherited

Return true if the root is empty, i.e. has not child nodes or constant tiles.

__hostdev__ bool isRootNext ( ) const
inlineinherited

return true if RootData is layout out immediately after TreeData in memory

static __hostdev__ uint64_t memUsage ( )
inlinestatic

return memory usage in bytes for the class

__hostdev__ uint32_t nodeCount ( ) const
inline
__hostdev__ uint32_t nodeCount ( int  level) const
inline
Tree& operator= ( const Tree< RootT > &  )
delete
__hostdev__ bool probeValue ( const CoordType ijk,
ValueType v 
) const
inline

Return true if this tree is empty, i.e. contains no values or nodes.

Combines the previous two methods in a single call

__hostdev__ RootT& root ( )
inline
__hostdev__ const RootT& root ( ) const
inline
__hostdev__ auto set ( const CoordType ijk,
ArgsT &&...  args 
)
inline
__hostdev__ void setFirstNode ( const NodeT *  node)
inlineinherited
__hostdev__ void setRoot ( const void *  root)
inlineinherited
__hostdev__ uint32_t totalNodeCount ( ) const
inline

Member Data Documentation

uint32_t mNodeCount[3]
inherited
int64_t mNodeOffset[4]
inherited
uint32_t mTileCount[3]
inherited
uint64_t mVoxelCount
inherited