![]() |
OpenVDB 13.1.0
|
VoxelBlockManager: acceleration structure for voxel-sequential, SIMT/SIMD-parallel access over the active voxels of an OnIndexGrid, independent of occupancy. More...
#include <nanovdb/NanoVDB.h>#include <nanovdb/HostBuffer.h>#include <nanovdb/util/MaskPrefixSum.h>#include <nanovdb/util/ForEach.h>#include <algorithm>#include <cstring>Go to the source code of this file.
Classes | |
| class | VoxelBlockManagerHandle< BufferT > |
| Move-only owner of the two raw metadata buffers that back a VoxelBlockManager: the per-block firstLeafID array (uint32_t[blockCount]) and the per-block jumpMap array (uint64_t[blockCount * JumpMapLength]). More... | |
| struct | VoxelBlockManagerBase< Log2BlockWidth > |
| Compile-time geometry parameters and output sentinels shared by the CPU and CUDA VoxelBlockManager decode structs. More... | |
| struct | VoxelBlockManager< Log2BlockWidth > |
| CPU counterpart of tools::cuda::VoxelBlockManager. Provides host-side decode of the inverse maps (sequential index -> leaf + voxel offset) for a single voxel block. The implementation is single-threaded per block and SIMD-accelerated (via util::shuffleDownMask and util::buildMaskPrefixSums); the caller is responsible for parallelism across blocks (e.g. OpenMP or nanovdb::util::forEach). More... | |
Namespaces | |
| namespace | nanovdb |
| Defines a simple memory pool used to call cub functions that use dynamic temporary storage. | |
| namespace | nanovdb::util |
| namespace | nanovdb::tools |
Functions | |
| template<int N, int Shift, typename DataT, typename MaskT> | |
| void | shuffleDownMask (DataT *NANOVDB_RESTRICT data, const MaskT *NANOVDB_RESTRICT masks, MaskT maskBits) |
| One pass of masked conditional shuffle-down on a stream of values. | |
| template<int Log2BlockWidth, typename BufferT> | |
| void | buildVoxelBlockManager (const NanoGrid< ValueOnIndex > *grid, VoxelBlockManagerHandle< BufferT > &handle) |
| Rebuild a VoxelBlockManager in-place using a pre-allocated handle. Zeros the jumpMap and recomputes both metadata arrays. No memory allocation. | |
| template<int Log2BlockWidth, typename BufferT = HostBuffer> | |
| VoxelBlockManagerHandle< BufferT > | buildVoxelBlockManager (const NanoGrid< ValueOnIndex > *grid, uint64_t firstOffset=0, uint64_t lastOffset=0, uint64_t nBlocks=0, const BufferT *pool=nullptr) |
| Allocate buffers and build a VoxelBlockManager on the host from a ValueOnIndex grid. Uses nanovdb::util::forEach to process lower internal nodes in parallel. | |
VoxelBlockManager: acceleration structure for voxel-sequential, SIMT/SIMD-parallel access over the active voxels of an OnIndexGrid, independent of occupancy.
Provides: