Skip to content

Commit 77f28d1

Browse files
authored
Massive improvements to NanoVDB (#1651)
1 parent e0479ce commit 77f28d1

File tree

94 files changed

+22575
-12200
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+22575
-12200
lines changed

doc/nanovdb/HelloWorld.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
```cpp
66
#include <openvdb/tools/LevelSetSphere.h> // replace with your own dependencies for generating the OpenVDB grid
7-
#include <nanovdb/util/OpenToNanoVDB.h> // converter from OpenVDB to NanoVDB (includes NanoVDB.h and GridManager.h)
7+
#include <nanovdb/util/CreateNanoGrid.h> // converter from OpenVDB to NanoVDB (includes NanoVDB.h and GridManager.h)
88
#include <nanovdb/util/IO.h>
99

1010
// Convert an openvdb level set sphere into a nanovdb, use accessors to print out multiple values from both
@@ -17,7 +17,7 @@ int main()
1717
auto srcGrid = openvdb::tools::createLevelSetSphere<openvdb::FloatGrid>(100.0f, openvdb::Vec3f(0.0f), 1.0f);
1818

1919
// Convert the OpenVDB grid, srcGrid, into a NanoVDB grid handle.
20-
auto handle = nanovdb::openToNanoVDB(*srcGrid);
20+
auto handle = nanovdb::createNanoGrid(*srcGrid);
2121

2222
// Define a (raw) pointer to the NanoVDB grid on the host. Note we match the value type of the srcGrid!
2323
auto* dstGrid = handle.grid<float>();
@@ -77,7 +77,7 @@ int main()
7777

7878
```cpp
7979
#include <nanovdb/util/IO.h> // this is required to read (and write) NanoVDB files on the host
80-
#include <nanovdb/DefaultCudaAllocator.h> // required for CUDA memory management
80+
#include <nanovdb/util/cuda/CudaDeviceBuffer.h> // required for CUDA memory management
8181

8282
extern "C" void launch_kernels(const nanovdb::NanoGrid<float>*,
8383
const nanovdb::NanoGrid<float>*,

doc/nanovdb/SourceTree.md

Lines changed: 131 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -15,120 +15,135 @@
1515
```bash
1616
foo@bar:~$ tree
1717
.
18-
└── nanovdb
19-
├── CMakeLists.txt
20-
├── cmd
21-
│ ├── CMakeLists.txt
22-
│ ├── convert
23-
│ │ └── nanovdb_convert.cc
24-
│ ├── print
25-
│ │ └── nanovdb_print.cc
26-
│ └── validate
27-
│ └── nanovdb_validate.cc
28-
├── CNanoVDB.h
29-
├── docs
30-
│ ├── CMakeLists.txt
31-
│ ├── codingstyle.txt
32-
│ └── doxygen-config
33-
├── examples
34-
│ ├── benchmark
35-
│ │ ├── BenchKernels_dense.cu
36-
│ │ ├── BenchKernels_nano.cu
37-
│ │ ├── Benchmark.cc
38-
│ │ ├── Benchmark_dense.cc
39-
│ │ ├── Benchmark_nano.cc
40-
│ │ ├── Camera.h
41-
│ │ ├── CMakeLists.txt
42-
│ │ ├── DenseGrid.h
43-
│ │ └── Image.h
44-
│ ├── CMakeLists.txt
45-
│ ├── ex_bump_pool_buffer
46-
│ │ └── bump_pool_buffer.cc
47-
│ ├── ex_collide_level_set
48-
│ │ ├── common.h
49-
│ │ ├── main.cc
50-
│ │ ├── nanovdb.cu
51-
│ │ └── openvdb.cc
52-
│ ├── ex_index_grid_cuda
53-
│ │ ├── index_grid_cuda.cc
54-
│ │ └── index_grid_cuda.cu
55-
│ ├── ex_make_custom_nanovdb
56-
│ │ └── make_custom_nanovdb.cc
57-
│ ├── ex_make_funny_nanovdb
58-
│ │ └── make_funny_nanovdb.cc
59-
│ ├── ex_make_nanovdb_sphere
60-
│ │ └── make_nanovdb_sphere.cc
61-
│ ├── ex_make_typed_grids
62-
│ │ └── make_typed_grids.cc
63-
│ ├── ex_map_pool_buffer
64-
│ │ └── map_pool_buffer.cc
65-
│ ├── ex_modify_nanovdb_thrust
66-
│ │ └── modify_nanovdb_thrust.cu
67-
│ ├── ex_nodemanager_cuda
68-
│ │ ├── nodemanager_cuda.cc
69-
│ │ └── nodemanager_cuda.cu
70-
│ ├── ex_openvdb_to_nanovdb
71-
│ │ └── openvdb_to_nanovdb.cc
72-
│ ├── ex_openvdb_to_nanovdb_accessor
73-
│ │ └── openvdb_to_nanovdb_accessor.cc
74-
│ ├── ex_openvdb_to_nanovdb_cuda
75-
│ │ ├── openvdb_to_nanovdb_cuda.cc
76-
│ │ └── openvdb_to_nanovdb_cuda.cu
77-
│ ├── ex_raytrace_fog_volume
78-
│ │ ├── common.h
79-
│ │ ├── main.cc
80-
│ │ ├── nanovdb.cu
81-
│ │ └── openvdb.cc
82-
│ ├── ex_raytrace_level_set
83-
│ │ ├── common.h
84-
│ │ ├── main.cc
85-
│ │ ├── nanovdb.cu
86-
│ │ └── openvdb.cc
87-
│ ├── ex_read_nanovdb_sphere
88-
│ │ └── read_nanovdb_sphere.cc
89-
│ ├── ex_read_nanovdb_sphere_accessor
90-
│ │ └── read_nanovdb_sphere_accessor.cc
91-
│ ├── ex_read_nanovdb_sphere_accessor_cuda
92-
│ │ ├── read_nanovdb_sphere_accessor_cuda.cc
93-
│ │ └── read_nanovdb_sphere_accessor_cuda.cu
94-
│ ├── ex_util
95-
│ │ ├── ComputePrimitives.h
96-
│ │ └── CpuTimer.h
97-
│ ├── ex_vox_to_nanovdb
98-
│ │ ├── vox_to_nanovdb.cc
99-
│ │ └── VoxToNanoVDB.h
100-
│ └── ex_write_nanovdb_grids
101-
│ └── write_nanovdb_grids.cc
102-
├── NanoVDB.h
103-
├── PNanoVDB.h
104-
├── Readme.md
105-
├── unittest
106-
│ ├── CMakeLists.txt
107-
│ ├── pnanovdb_validate_strides.h
108-
│ ├── TestNanoVDB.cc
109-
│ └── TestOpenVDB.cc
110-
└── util
111-
├── CSampleFromVoxels.h
112-
├── CudaDeviceBuffer.h
113-
├── DitherLUT.h
114-
├── ForEach.h
115-
├── GridBuilder.h
116-
├── GridChecksum.h
117-
├── GridHandle.h
118-
├── GridStats.h
119-
├── GridValidator.h
120-
├── HDDA.h
121-
├── HostBuffer.h
122-
├── IndexGridBuilder.h
123-
├── Invoke.h
124-
├── IO.h
125-
├── NanoToOpenVDB.h
126-
├── NodeManager.h
127-
├── OpenToNanoVDB.h
128-
├── Primitives.h
129-
├── Range.h
130-
├── Ray.h
131-
├── Reduce.h
132-
├── SampleFromVoxels.h
133-
└── Stencils.h
18+
├── CMakeLists.txt
19+
├── cmd
20+
│ ├── CMakeLists.txt
21+
│ ├── convert
22+
│ │ └── nanovdb_convert.cc
23+
│ ├── print
24+
│ │ └── nanovdb_print.cc
25+
│ └── validate
26+
│ └── nanovdb_validate.cc
27+
├── CNanoVDB.h
28+
├── docs
29+
│ ├── CMakeLists.txt
30+
│ ├── codingstyle.txt
31+
│ └── doxygen-config
32+
├── examples
33+
│ ├── benchmark
34+
│ │ ├── BenchKernels_dense.cu
35+
│ │ ├── BenchKernels_nano.cu
36+
│ │ ├── Benchmark_dense.cu
37+
│ │ ├── Benchmark_nano.cu
38+
│ │ ├── Camera.h
39+
│ │ ├── CMakeLists.txt
40+
│ │ ├── DenseGrid.h
41+
│ │ ├── Image.h
42+
│ │ ├── TestBenchmark.cc
43+
│ │ └── TestBenchmark.cu
44+
│ ├── CMakeLists.txt
45+
│ ├── ex_bump_pool_buffer
46+
│ │ └── bump_pool_buffer.cc
47+
│ ├── ex_collide_level_set
48+
│ │ ├── common.h
49+
│ │ ├── main.cc
50+
│ │ ├── nanovdb.cu
51+
│ │ └── openvdb.cc
52+
│ ├── ex_index_grid_cuda
53+
│ │ ├── index_grid_cuda.cu
54+
│ │ └── index_grid_cuda_kernel.cu
55+
│ ├── ex_make_custom_nanovdb
56+
│ │ └── make_custom_nanovdb.cc
57+
│ ├── ex_make_custom_nanovdb_cuda
58+
│ │ ├── make_custom_nanovdb_cuda.cc
59+
│ │ └── make_custom_nanovdb_cuda_kernel.cu
60+
│ ├── ex_make_funny_nanovdb
61+
│ │ └── make_funny_nanovdb.cc
62+
│ ├── ex_make_nanovdb_sphere
63+
│ │ └── make_nanovdb_sphere.cc
64+
│ ├── ex_make_typed_grids
65+
│ │ └── make_typed_grids.cc
66+
│ ├── ex_map_pool_buffer
67+
│ │ └── map_pool_buffer.cc
68+
│ ├── ex_modify_nanovdb_thrust
69+
│ │ └── modify_nanovdb_thrust.cu
70+
│ ├── ex_nodemanager_cuda
71+
│ │ ├── nodemanager_cuda.cc
72+
│ │ └── nodemanager_cuda_kernel.cu
73+
│ ├── ex_openvdb_to_nanovdb
74+
│ │ └── openvdb_to_nanovdb.cc
75+
│ ├── ex_openvdb_to_nanovdb_accessor
76+
│ │ └── openvdb_to_nanovdb_accessor.cc
77+
│ ├── ex_openvdb_to_nanovdb_cuda
78+
│ │ ├── openvdb_to_nanovdb_cuda.cc
79+
│ │ └── openvdb_to_nanovdb_cuda_kernel.cu
80+
│ ├── ex_raytrace_fog_volume
81+
│ │ ├── common.h
82+
│ │ ├── main.cc
83+
│ │ ├── nanovdb.cu
84+
│ │ └── openvdb.cc
85+
│ ├── ex_raytrace_level_set
86+
│ │ ├── common.h
87+
│ │ ├── main.cc
88+
│ │ ├── nanovdb.cu
89+
│ │ └── openvdb.cc
90+
│ ├── ex_read_nanovdb_sphere
91+
│ │ └── read_nanovdb_sphere.cc
92+
│ ├── ex_read_nanovdb_sphere_accessor
93+
│ │ └── read_nanovdb_sphere_accessor.cc
94+
│ ├── ex_read_nanovdb_sphere_accessor_cuda
95+
│ │ ├── read_nanovdb_sphere_accessor_cuda.cu
96+
│ │ └── read_nanovdb_sphere_accessor_cuda_kernel.cu
97+
│ ├── ex_util
98+
│ │ └── ComputePrimitives.h
99+
│ ├── ex_voxels_to_grid_cuda
100+
│ │ └── ex_voxels_to_grid_cuda.cu
101+
│ ├── ex_vox_to_nanovdb
102+
│ │ ├── vox_to_nanovdb.cc
103+
│ │ └── VoxToNanoVDB.h
104+
│ └── ex_write_nanovdb_grids
105+
│ └── write_nanovdb_grids.cc
106+
├── NanoVDB.h
107+
├── PNanoVDB.h
108+
├── Readme.md
109+
├── unittest
110+
│ ├── CMakeLists.txt
111+
│ ├── pnanovdb_validate_strides.h
112+
│ ├── TestNanoVDB.cc
113+
│ ├── TestNanoVDB.cu
114+
│ └── TestOpenVDB.cc
115+
└── util
116+
├── CpuTimer.h
117+
├── CreateNanoGrid.h
118+
├── CSampleFromVoxels.h
119+
├── cuda
120+
│ ├── CudaAddBlindData.cuh
121+
│ ├── CudaDeviceBuffer.h
122+
│ ├── CudaGridHandle.cuh
123+
│ ├── CudaIndexToGrid.cuh
124+
│ ├── CudaPointsToGrid.cuh
125+
│ ├── CudaSignedFloodFill.cuh
126+
│ ├── CudaUtils.h
127+
│ └── GpuTimer.cuh
128+
├── DitherLUT.h
129+
├── ForEach.h
130+
├── GridBuilder.h
131+
├── GridChecksum.h
132+
├── GridHandle.h
133+
├── GridStats.h
134+
├── GridValidator.h
135+
├── HDDA.h
136+
├── HostBuffer.h
137+
├── Invoke.h
138+
├── IO.h
139+
├── NanoToOpenVDB.h
140+
├── NodeManager.h
141+
├── OpenToNanoVDB.h
142+
├── PrefixSum.h
143+
├── Primitives.h
144+
├── Range.h
145+
├── Ray.h
146+
├── Reduce.h
147+
├── SampleFromVoxels.h
148+
└── Stencils.h
134149
```

nanovdb/nanovdb/CMakeLists.txt

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ message(STATUS "----------------------------------------------------")
2525
option(NANOVDB_BUILD_TOOLS "Build command-line tools" ON)
2626
option(NANOVDB_BUILD_UNITTESTS "Build Unit tests" OFF)
2727
option(NANOVDB_BUILD_EXAMPLES "Build examples" OFF)
28-
option(NANOVDB_BUILD_BENCHMARK "Build benchmark in examples" OFF)
28+
#option(NANOVDB_BUILD_BENCHMARK "Build benchmark in examples" OFF)
2929

3030
option(NANOVDB_USE_INTRINSICS "Build with hardware intrinsics support" OFF)
3131
option(NANOVDB_USE_CUDA "Build with CUDA support" OFF)
@@ -71,12 +71,13 @@ if(UNIX)
7171
find_package(Threads REQUIRED)
7272
endif()
7373

74-
if(NANOVDB_BUILD_UNITTESTS OR NANOVDB_BUILD_BENCHMARK)
74+
#if(NANOVDB_BUILD_UNITTESTS OR NANOVDB_BUILD_BENCHMARK)
75+
if(NANOVDB_BUILD_UNITTESTS)
7576
find_package(GTest REQUIRED)
7677
endif()
7778

7879
if(NANOVDB_USE_CUDA)
79-
set(CMAKE_CUDA_STANDARD 11)
80+
set(CMAKE_CUDA_STANDARD 17)
8081
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
8182

8283
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.18)
@@ -165,8 +166,20 @@ set(NANOVDB_INCLUDE_FILES
165166

166167
# NanoVDB util header files
167168
set(NANOVDB_INCLUDE_UTILFILES
169+
util/CpuTimer.h
170+
util/CreateNanoGrid.h
168171
util/CSampleFromVoxels.h
169-
util/CudaDeviceBuffer.h
172+
util/cuda/CudaAddBlindData.cuh
173+
util/cuda/CudaDeviceBuffer.h
174+
util/cuda/CudaGridChecksum.cuh
175+
util/cuda/CudaGridHandle.cuh
176+
util/cuda/CudaGridStats.cuh
177+
util/cuda/CudaIndexToGrid.cuh
178+
util/cuda/CudaNodeManager.cuh
179+
util/cuda/CudaPointsToGrid.cuh
180+
util/cuda/CudaSignedFloodFill.cuh
181+
util/cuda/CudaUtils.h
182+
util/cuda/GpuTimer.h
170183
util/DitherLUT.h
171184
util/ForEach.h
172185
util/GridBuilder.h
@@ -181,6 +194,7 @@ set(NANOVDB_INCLUDE_UTILFILES
181194
util/NanoToOpenVDB.h
182195
util/NodeManager.h
183196
util/OpenToNanoVDB.h
197+
util/PrefixSum.h
184198
util/Primitives.h
185199
util/Range.h
186200
util/Ray.h

nanovdb/nanovdb/CNanoVDB.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -687,7 +687,7 @@ cnanovdb_griddata_valid(const CNANOVDB_GLOBAL cnanovdb_griddata *RESTRICT grid)
687687
{
688688
if (!grid)
689689
return 0;
690-
if (grid->mMagic != 0x304244566f6e614eUL)
690+
if (grid->mMagic != 0x304244566f6e614eUL && grid->mMagic != 0x314244566f6e614eUL)
691691
return 0;
692692
return 1;
693693
}

0 commit comments

Comments
 (0)