Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Massive improvements to NanoVDB #1651

Merged

Conversation

kmuseth
Copy link
Contributor

@kmuseth kmuseth commented Aug 1, 2023

Massive dump of improvements to NanoVDB:

  • Minor version changed from 4 to 6 (major version is unchanged since the ABI is preserved)
  • Transition from C++11 to C++17 in NanoVDB.h and its tools
  • New (backwards compatible ) file format that allows serialized grids to with streamed directly to file without headers
  • Several new ways to construct and modify NanoVDB grids on the GPU
  • New device function to convert points into a compact grid: nanovdb::cudaPointsToGrid
  • Improved and renamed device function that converts voxels into a grid: nanovdb::cudaVoxelsToGrid
  • Introduced a new extendable API for acceleration of custom random-access methods, e.g. getValue(ijk)
  • Index grids in 4 flavors (Index, OnIndex, IndexMask, and OnIndexMask)
  • Introduced new (dummy) build-type nanovdb::Points and nanovdb::GridType::PointIndex
  • Introduced new types nanovdb::GridType::Vec3u16 and nanovdb::GridType::Vec3u8 used for compressed representations of point coordinates as blind data
  • CreateNanoGrid.h is replacing GridBuilder.h, IndexGridBuilder.h and OpenToNanoVDB.h
  • Moved CudaDeviceBuffer.h to cuda/CudaDeviceBuffer.h
  • Added cuda/CudaUtils.h and cuda/GpuTimer.h with cuda utility functions
  • Added cuda/CudaPointToGrids.cuh that constructs device grids from lists of points or voxels
  • Added cuda/CudaIndexToGrid.cuh that converts IndexGrids and values into regular Grids
  • Added cuda/CudaSignedFloodFill.cuh that performs signed-flood filing on SDF on the GPU
  • Added cuda/CudaAddBlindData.cuh that adds bind data to an existing grid on the GPU
  • Added cuda/CudaGridChecksum.cuh that computes CRC32 checksums of grids on the GPU
  • Added cuda/CudaGridHandle.cuh that handles grids on the GPU
  • Added cuda/CudaNodeManager.cuh that constructs a NodeManager on the GPU
  • Added cuda/CudaGridStats.cuh that computes grid statistics on the GPU
  • The move constructor in GridHandle now requires the GridBuffer to actually contain a valid grid
  • Added new types: Ve4f, Ve4d, ValueIndex, ValueOnIndex, ValueIndexMask, and ValueOnIndexMask
  • Major improvements to GridBuilder.h, which allows user to construct grids with random access on the host
  • Numerous improvements in NanoVDB.h: e.g. Customizable get/set methods on ValueAccessor, BitFlags, transform(Map), expandAtomic(BBox), expandAtomic(Coord), intersectAtomic(BBox), pi(), BuildTraits, more documentation, Mask:: DenseIterator, Mask:: setOnAtomic,Mask:: setOffAtomic, Map constructors, DataType are now public vs private in all node types, GridMetaData can now be copied
  • PNanoVDB.h is now in sync with NanoVDB.h
  • Added PrefixSum.h for concurrent computation of prefix sum on the host
  • Primitives.h can now create grids on the CPU with SDF, FOG and point of torus

Signed-off-by: Ken Museth <[email protected]>
Signed-off-by: Ken Museth <[email protected]>
Signed-off-by: Ken Museth <[email protected]>
Signed-off-by: Ken Museth <[email protected]>
Signed-off-by: Ken Museth <[email protected]>
Signed-off-by: Ken Museth <[email protected]>
Signed-off-by: Ken Museth <[email protected]>
Signed-off-by: Ken Museth <[email protected]>
Signed-off-by: Ken Museth <[email protected]>
Signed-off-by: Ken Museth <[email protected]>
Signed-off-by: Ken Museth <[email protected]>
Signed-off-by: Ken Museth <[email protected]>
Signed-off-by: Ken Museth <[email protected]>
Signed-off-by: Ken Museth <[email protected]>
@kmuseth
Copy link
Contributor Author

kmuseth commented Sep 1, 2023

I'm getting weird compiler errors in tbb when building linux-nanovdb:cxx:clang++-Debug/Release. Any ideas what's causing this issue? Clearly it has nothing to do with my code :)

@kmuseth
Copy link
Contributor Author

kmuseth commented Oct 17, 2023

Lets make sure we squash all these commits before we merge this!

don't know how to do that after the push. Also don't understand why this is a blocking request

@Idclip
Copy link
Contributor

Idclip commented Oct 17, 2023

Lets make sure we squash all these commits before we merge this!

don't know how to do that after the push. Also don't understand why this is a blocking request

Because the VDB commit history should be as clean as possible, not full of "wip fix" commits and not retroactively fixed once pushed to master

@Idclip Idclip dismissed their stale review October 17, 2023 18:55

squash and merge

@kmuseth kmuseth merged commit 77f28d1 into AcademySoftwareFoundation:master Oct 27, 2023
41 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants