OpenVDB  10.0.1
Classes | Public Types | Public Member Functions | Static Public Attributes | Friends | List of all members
ReadAccessor< BuildT,-1,-1,-1 > Class Template Reference

A read-only value accessor with three levels of node caching. This allows for inverse tree traversal during lookup, which is on average significantly faster than calling the equivalent method on the tree (i.e. top-down traversal). More...

#include <nanovdb/NanoVDB.h>

Classes

struct  NodeInfo
 

Public Types

using ValueType = typename RootT::ValueType
 
using CoordType = typename RootT::CoordType
 

Public Member Functions

 ReadAccessor (const RootT &root)
 Constructor from a root node. More...
 
 ReadAccessor (const GridT &grid)
 Constructor from a grid. More...
 
 ReadAccessor (const TreeT &tree)
 Constructor from a tree. More...
 
void clear ()
 Reset this access to its initial state, i.e. with an empty cache Noop since this template specialization has no cache. More...
 
const RootTroot () const
 
 ReadAccessor (const ReadAccessor &)=default
 Defaults constructors. More...
 
 ~ReadAccessor ()=default
 
ReadAccessoroperator= (const ReadAccessor &)=default
 
ValueType getValue (const CoordType &ijk) const
 
ValueType operator() (const CoordType &ijk) const
 
ValueType operator() (int i, int j, int k) const
 
NodeInfo getNodeInfo (const CoordType &ijk) const
 
bool isActive (const CoordType &ijk) const
 
bool probeValue (const CoordType &ijk, ValueType &v) const
 
const LeafTprobeLeaf (const CoordType &ijk) const
 
template<typename RayT >
uint32_t getDim (const CoordType &ijk, const RayT &ray) const
 

Static Public Attributes

static const int CacheLevels = 0
 

Friends

template<typename >
class RootNode
 Allow nodes to insert themselves into the cache. More...
 
template<typename , uint32_t >
class InternalNode
 
template<typename , typename , template< uint32_t > class, uint32_t >
class LeafNode
 

Detailed Description

template<typename BuildT>
class nanovdb::ReadAccessor< BuildT,-1,-1,-1 >

A read-only value accessor with three levels of node caching. This allows for inverse tree traversal during lookup, which is on average significantly faster than calling the equivalent method on the tree (i.e. top-down traversal).

Note
By virtue of the fact that a value accessor accelerates random access operations by re-using cached access patterns, this access should be reused for multiple access operations. In other words, never create an instance of this accessor for a single access only. In general avoid single access operations with this accessor, and if that is not possible call the corresponding method on the tree instead.
Warning
Since this ReadAccessor internally caches raw pointers to the nodes of the tree structure, it is not safe to copy between host and device, or even to share among multiple threads on the same host or device. However, it is light-weight so simple instantiate one per thread (on the host and/or device).

Used to accelerated random access into a VDB tree. Provides on average O(1) random access operations by means of inverse tree traversal, which amortizes the non-const time complexity of the root node.

Member Typedef Documentation

using CoordType = typename RootT::CoordType
using ValueType = typename RootT::ValueType

Constructor & Destructor Documentation

ReadAccessor ( const RootT root)
inline

Constructor from a root node.

ReadAccessor ( const GridT grid)
inline

Constructor from a grid.

ReadAccessor ( const TreeT tree)
inline

Constructor from a tree.

ReadAccessor ( const ReadAccessor< BuildT,-1,-1,-1 > &  )
default

Defaults constructors.

~ReadAccessor ( )
default

Member Function Documentation

void clear ( )
inline

Reset this access to its initial state, i.e. with an empty cache Noop since this template specialization has no cache.

uint32_t getDim ( const CoordType ijk,
const RayT &  ray 
) const
inline
NodeInfo getNodeInfo ( const CoordType ijk) const
inline
ValueType getValue ( const CoordType ijk) const
inline
bool isActive ( const CoordType ijk) const
inline
ValueType operator() ( const CoordType ijk) const
inline
ValueType operator() ( int  i,
int  j,
int  k 
) const
inline
ReadAccessor& operator= ( const ReadAccessor< BuildT,-1,-1,-1 > &  )
default
const LeafT* probeLeaf ( const CoordType ijk) const
inline
bool probeValue ( const CoordType ijk,
ValueType v 
) const
inline
const RootT& root ( ) const
inline

Friends And Related Function Documentation

friend class InternalNode
friend
friend class LeafNode
friend
friend class RootNode
friend

Allow nodes to insert themselves into the cache.

Member Data Documentation

const int CacheLevels = 0
static