Skip to content

Commit 41bb127

Browse files
authored
Merge pull request #1720 from AcademySoftwareFoundation/v11.0.0_rc
V11.0.0 -> Master
2 parents 9153c12 + 6c044e6 commit 41bb127

File tree

9 files changed

+230
-70
lines changed

9 files changed

+230
-70
lines changed

CHANGES

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,86 @@
11
OpenVDB Version History
22
=======================
33

4-
Version 11.0.0 - In Progress
4+
Version 11.0.0 - November 1, 2023
55

66
This version introduces ABI changes relative to older major releases,
77
so to preserve ABI compatibility it might be necessary to define the
88
macro OPENVDB_ABI_VERSION_NUMBER=N, where, for example, N is 9 for
99
Houdini 19.5 and 10 for Houdini 20.0.
1010

11+
OpenEXR 2 and Python 2 are no longer supported.
12+
13+
OpenVDB:
14+
Improvements:
15+
- Removed use of boost::any in favor of std::any.
16+
[Contributed by Brian McKinnon]
17+
18+
Bug Fixes:
19+
- Fix potential crash reading corrupt .vdb files with invalid
20+
blosc or zip chunks.
21+
[Contributed by Matthias Ueberheide]
22+
23+
NanoVDB:
24+
Highlights:
25+
- Several new tools to generate and modify NanoVDB grids on the GPU.
26+
- New file format that supports streaming of raw grid buffers.
27+
28+
New Features:
29+
- New memory efficient GridClass::IndexGrid that separates values from tree
30+
- 4 new GridTypes (Index, OnIndex, IndexMask, OnIndexMask) used by IndexGrid
31+
- Added createNanoGrid that replaces older conversion methods in GridBuilder.h,
32+
IndexGridBuilder.h and OpenToNanoVDB.h
33+
- Added cudaPointsToGrid that constructs a point device grid from a list of
34+
points.
35+
- Added cudaVoxelsToGrid that constructs a voxel device grid from a list of
36+
voxels.
37+
- Added cuda/CudaUtils.h with several cuda utility functions.
38+
- Added GpuTimer for timing of kernels in a specific cuda stream.
39+
- Added cudaIndexToGrid that converts IndexGrids into regular Grids.
40+
- Added cudaSignedFloodFill that performs signed-flood filling on the GPU.
41+
- Added cudaAddBlindData that adds blind data to an existing grid on the GPU.
42+
- Added cudaGridChecksum that computes checksums of device grids.
43+
- Added cudaGridHandle that handles grids on the GPU.
44+
- Added cudaNodeManager that constructs a NodeManager on the GPU.
45+
- Added build type Points and GridType::PointIndex for point grids.
46+
- Added GridType::Vec3u16 and GridType::Vec3u8 for compressed coordinates.
47+
- Added PrefixSum.h for concurrent computation of prefix sum on the CPU.
48+
49+
API Changes:
50+
- Version 32.6.0 (ABI is unchanged).
51+
- Transition from C++11 to C++17
52+
- Vec3R is deprecated, please use Vec3d instead.
53+
- nanoToOpenVDB now takes the index of a NanoVDB in a GridHandle.
54+
- GridData, InternalData and LeafData are now public.
55+
- GridMetaData can be copied.
56+
- Improvements to GridBuilder.h that allows construction of grids on CPU.
57+
- GridHandle's move c-tor now requires the GridBuffer to contain a valid grid.
58+
- Moved CudaDeviceBuffer.h to cuda/CudaDeviceBuffer.h.
59+
- New API for acceleration of custom random-access with ValueAccessors.
60+
- Added BitFlags class for convenient bit-mask operations.
61+
- Added Vec2/3::min/maxComponentAtomic GPU methods.
62+
- Added BBox::expandAtomic and BBox::intersectAtomic.
63+
- Added Coord::expandAtomic.
64+
- Added Map constructors.
65+
- Added Mask::DenseIterator, Mask::setOnAtomic, and Mask::setOffAtomic.
66+
- InternalNode::ChildIterator is now const-correct.
67+
- Added several new NanoVDB Build Traits.
68+
- Syncing PNanoVDB.h with NanoVDB.h.
69+
70+
Build:
71+
- Support for OpenEXR 2.X has been removed.
72+
- Better support for building with external package configurations
73+
with CMAKE_FIND_PACKAGE_PREFER_CONFIG=ON.
74+
75+
Python:
76+
- Removed Python 2 support.
77+
[Contributed by Matthew Cong]
78+
- Removed explicit bindings for Math types.
79+
[Contributed by Matthew Cong]
80+
- Improved type casting for TypedMetadata.
81+
[Contributed by Matthew Cong]
82+
83+
1184
Version 10.1.0 - October 11, 2023
1285

1386
Highlights:

cmake/FindOpenVDB.cmake

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -491,11 +491,37 @@ endif()
491491
# Add standard dependencies
492492

493493
find_package(TBB REQUIRED COMPONENTS tbb)
494+
find_package(Boost REQUIRED COMPONENTS iostreams)
494495

495496
# Add deps for pyopenvdb
497+
# @todo track for numpy
496498

497499
if(pyopenvdb IN_LIST OpenVDB_FIND_COMPONENTS)
498500
find_package(Python REQUIRED)
501+
502+
# Boost python handling - try and find both python and pythonXx (version suffixed).
503+
# Prioritize the version suffixed library, failing if neither exist.
504+
505+
find_package(Boost ${MINIMUM_BOOST_VERSION}
506+
QUIET COMPONENTS python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}
507+
)
508+
509+
if(TARGET Boost::python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR})
510+
set(BOOST_PYTHON_LIB "python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}")
511+
message(STATUS "Found boost_python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}")
512+
else()
513+
find_package(Boost ${MINIMUM_BOOST_VERSION} QUIET COMPONENTS python)
514+
if(TARGET Boost::python)
515+
set(BOOST_PYTHON_LIB "python")
516+
message(STATUS "Found non-suffixed boost_python, assuming to be python version "
517+
"\"${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}\" compatible"
518+
)
519+
else()
520+
message(FATAL_ERROR "Unable to find boost_python or "
521+
"boost_python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}."
522+
)
523+
endif()
524+
endif()
499525
endif()
500526

501527
# Add deps for openvdb_ax
@@ -630,10 +656,6 @@ if(OpenVDB_USES_IMATH_HALF)
630656
find_package(Imath REQUIRED CONFIG)
631657
endif()
632658

633-
if(OpenVDB_USES_DELAYED_LOADING)
634-
find_package(Boost REQUIRED COMPONENTS iostreams)
635-
endif()
636-
637659
if(UNIX)
638660
find_package(Threads REQUIRED)
639661
endif()
@@ -744,7 +766,7 @@ if(OpenVDB_pyopenvdb_LIBRARY)
744766
set_target_properties(OpenVDB::pyopenvdb PROPERTIES
745767
IMPORTED_LOCATION "${OpenVDB_pyopenvdb_LIBRARY}"
746768
INTERFACE_INCLUDE_DIRECTORIES "${OpenVDB_pyopenvdb_INCLUDE_DIR};${PYTHON_INCLUDE_DIR}"
747-
INTERFACE_LINK_LIBRARIES "OpenVDB::openvdb;${PYTHON_LIBRARIES}"
769+
INTERFACE_LINK_LIBRARIES "OpenVDB::openvdb;Boost::${BOOST_PYTHON_LIB};${PYTHON_LIBRARIES}"
748770
INTERFACE_COMPILE_FEATURES cxx_std_17
749771
)
750772
endif()

doc/build.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ PyBind11 | C++/python bindings
267267
NumPy | Scientific computing with Python | Optional (Python) |
268268
LLVM | Target-independent code generation | OpenVDB AX |
269269

270-
At a minimum a matching C++17 compiler and CMake will be required. See
270+
At a minimum, boost, a matching C++17 compiler and CMake will be required. See
271271
the full [dependency list](@ref dependencies) for help with downloading and
272272
installing the above software. Note that as Blosc and ZLib are provided as part
273273
of the Houdini installation `USE_BLOSC` and `USE_ZLIB` should be left `ON`.

doc/changes.txt

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,105 @@
22

33
@page changes Release Notes
44

5+
@htmlonly <a name="v11_0_0_changes"></a>@endhtmlonly
6+
@par
7+
<B>Version 11.0.0</B> - <I>November 1, 2023</I>
8+
9+
@par
10+
<BLOCKQUOTE>
11+
This version introduces ABI changes relative to older major releases, so to
12+
preserve ABI compatibility it might be necessary to define the macro
13+
<TT>OPENVDB_ABI_VERSION_NUMBER=</TT><I>N</I>.
14+
</BLOCKQUOTE>
15+
16+
@par
17+
<BLOCKQUOTE>
18+
OpenEXR 2 and Python 2 are no longer supported.
19+
</BLOCKQUOTE>
20+
21+
@par
22+
OpenVDB:
23+
- Improvements:
24+
- Removed use of @c boost::any in favor of @c std::any.
25+
<I>[Contributed&nbsp;by&nbsp;Brian&nbsp;McKinnon]</I>
26+
27+
- Bug Fixes:
28+
- Fix potential crash reading corrupt .vdb files with invalid blosc or zip
29+
chunks.
30+
<I>[Contributed&nbsp;by&nbsp;Matthias&nbsp;Ueberheide]</I>
31+
32+
@par
33+
NanoVDB:
34+
- Highlights:
35+
- Several new tools to generate and modify NanoVDB grids on the GPU.
36+
- New file format that supports streaming of raw grid buffers.
37+
38+
- New Features:
39+
- New memory efficient @c GridClass::IndexGrid that separates values from tree
40+
- 4 new GridTypes (@c Index, @c OnIndex, @c IndexMask, @c OnIndexMask) used by
41+
IndexGrid
42+
- Added @c createNanoGrid that replaces older conversion methods in
43+
<TT>GridBuilder.h</TT>, <TT>IndexGridBuilder.h</TT> and
44+
<TT>OpenToNanoVDB.h</TT>
45+
- Added @c cudaPointsToGrid that constructs a point device grid from a list of
46+
points.
47+
- Added @c cudaVoxelsToGrid that constructs a voxel device grid from a list of
48+
voxels.
49+
- Added <TT>cuda/CudaUtils.h</TT> with several cuda utility functions.
50+
- Added @c GpuTimer for timing of kernels in a specific cuda stream.
51+
- Added @c cudaIndexToGrid that converts IndexGrids into regular Grids.
52+
- Added @c cudaSignedFloodFill that performs signed-flood filling on the GPU.
53+
- Added @c cudaAddBlindData that adds blind data to an existing grid on the
54+
GPU.
55+
- Added @c cudaGridChecksum that computes checksums of device grids.
56+
- Added @c cudaGridHandle that handles grids on the GPU.
57+
- Added @c cudaNodeManager that constructs a NodeManager on the GPU.
58+
- Added build type @c Points and @c GridType::PointIndex for point grids.
59+
- Added @c GridType::Vec3u16 and @c GridType::Vec3u8 for compressed
60+
coordinates.
61+
- Added <TT>PrefixSum.h</TT> for concurrent computation of prefix sum on the
62+
CPU.
63+
64+
- API Changes:
65+
- Version 32.6.0 (ABI is unchanged).
66+
- Transition from C++11 to C++17
67+
- Vec3R is deprecated, please use Vec3d instead.
68+
- nanoToOpenVDB now takes the index of a NanoVDB in a GridHandle.
69+
- GridData, InternalData and LeafData are now public.
70+
- GridMetaData can be copied.
71+
- Improvements to <TT>GridBuilder.h</TT> that allows construction of grids on
72+
CPU.
73+
- GridHandle's move c-tor now requires the GridBuffer to contain a valid grid.
74+
- Moved <TT>CudaDeviceBuffer.h</TT> to <TT>cuda/CudaDeviceBuffer.h</TT>.
75+
- New API for acceleration of custom random-access with ValueAccessors.
76+
- Added BitFlags class for convenient bit-mask operations.
77+
- Added Vec2/3 min/maxComponentAtomic GPU methods.
78+
- Added @c BBox::expandAtomic and @c BBox::intersectAtomic.
79+
- Added @c Coord::expandAtomic.
80+
- Added Map constructors.
81+
- Added @c Mask::DenseIterator, @c Mask::setOnAtomic, and
82+
@c Mask::setOffAtomic.
83+
- @c InternalNode::ChildIterator is now const-correct.
84+
- Added several new NanoVDB Build Traits.
85+
- Syncing <TT>PNanoVDB.h</TT> with <TT>NanoVDB.h</TT>.
86+
87+
@par
88+
Build:
89+
- Support for <TT>OpenEXR 2.X</TT> has been removed.
90+
- Better support for building with external package configurations with
91+
<TT>CMAKE_FIND_PACKAGE_PREFER_CONFIG=ON</TT>.
92+
93+
@par
94+
Python:
95+
- Removed Python 2 support.
96+
<I>[Contributed&nbsp;by&nbsp;Matthew&nbsp;Cong]</I>
97+
- Removed explicit bindings for Math types.
98+
<I>[Contributed&nbsp;by&nbsp;Matthew&nbsp;Cong]</I>
99+
- Improved type casting for TypedMetadata.
100+
<I>[Contributed&nbsp;by&nbsp;Matthew&nbsp;Cong]</I>
101+
102+
103+
5104
@htmlonly <a name="v10_1_0_changes"></a>@endhtmlonly
6105
@par
7106
<B>Version 10.1.0</B> - <I>October 11, 2023</I>

doc/dependencies.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Reference Platform, but for those that do, their specified versions are
3636

3737
Component | Requirements | Optional
3838
----------------------- | ----------------------------------------------- | --------
39-
OpenVDB Core Library | CMake, C++17 compiler, TBB::tbb | Blosc, ZLib, Log4cplus, Imath::Imath, Boost::iostream
39+
OpenVDB Core Library | CMake, C++17 compiler, TBB::tbb, Boost::headers | Blosc, ZLib, Log4cplus, Imath::Imath, Boost::iostream
4040
OpenVDB Print | Core Library dependencies | -
4141
OpenVDB LOD | Core Library dependencies | -
4242
OpenVDB Render | Core Library dependencies | OpenEXR, Imath::Imath, libpng
@@ -65,7 +65,7 @@ Imath | 3.1 | Latest | Half precision floating points
6565
OpenEXR | 3.1 | Latest | EXR serialization support | Y | Y | http://www.openexr.com
6666
TBB | 2020.2 | 2020.3 | Threading Building Blocks - template library for task parallelism | Y | Y | https://www.threadingbuildingblocks.org
6767
ZLIB | 1.2.7 | Latest | Compression library for disk serialization compression | Y | Y | https://www.zlib.net
68-
Boost | 1.73 | 1.80 | Components: iostreams | Y | Y | https://www.boost.org
68+
Boost | 1.73 | 1.80 | Components: headers, iostreams | Y | Y | https://www.boost.org
6969
LLVM | 10.0.0 | 13.0.0* | Target-independent code generation | Y | Y | https://llvm.org/
7070
Bison | 3.0.0 | 3.7.0 | General-purpose parser generator | Y | Y | https://www.gnu.org/software/gcc
7171
Flex | 2.6.0 | 2.6.4 | Fast lexical analyzer generator | Y | Y | https://github.com/westes/flex

openvdb/openvdb/CMakeLists.txt

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -110,14 +110,16 @@ endif()
110110

111111
if(OPENVDB_USE_DELAYED_LOADING)
112112
find_package(Boost ${MINIMUM_BOOST_VERSION} REQUIRED COMPONENTS iostreams)
113+
else()
114+
find_package(Boost ${MINIMUM_BOOST_VERSION} REQUIRED COMPONENTS headers)
115+
endif()
113116

114-
if(OPENVDB_FUTURE_DEPRECATION AND FUTURE_MINIMUM_BOOST_VERSION)
115-
# The X.Y.Z boost version value isn't available until CMake 3.14
116-
set(FULL_BOOST_VERSION "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}")
117-
if(${FULL_BOOST_VERSION} VERSION_LESS FUTURE_MINIMUM_BOOST_VERSION)
118-
message(DEPRECATION "Support for Boost versions < ${FUTURE_MINIMUM_BOOST_VERSION} "
119-
"is deprecated and will be removed.")
120-
endif()
117+
if(OPENVDB_FUTURE_DEPRECATION AND FUTURE_MINIMUM_BOOST_VERSION)
118+
# The X.Y.Z boost version value isn't available until CMake 3.14
119+
set(FULL_BOOST_VERSION "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}")
120+
if(${FULL_BOOST_VERSION} VERSION_LESS FUTURE_MINIMUM_BOOST_VERSION)
121+
message(DEPRECATION "Support for Boost versions < ${FUTURE_MINIMUM_BOOST_VERSION} "
122+
"is deprecated and will be removed.")
121123
endif()
122124
endif()
123125

@@ -244,17 +246,20 @@ endif()
244246

245247
if(OPENVDB_USE_DELAYED_LOADING)
246248
list(APPEND OPENVDB_CORE_DEPENDENT_LIBS Boost::iostreams)
247-
if(WIN32)
248-
# Boost headers contain #pragma commands on Windows which causes Boost
249-
# libraries to be linked in automatically. Custom boost installations
250-
# may find that these naming conventions don't always match and can
251-
# cause linker errors. This option disables this feature of Boost. Note
252-
# -DBOOST_ALL_NO_LIB can also be provided manually.
253-
if(OPENVDB_DISABLE_BOOST_IMPLICIT_LINKING)
254-
list(APPEND OPENVDB_CORE_DEPENDENT_LIBS
255-
Boost::disable_autolinking # add -DBOOST_ALL_NO_LIB
256-
)
257-
endif()
249+
else()
250+
list(APPEND OPENVDB_CORE_DEPENDENT_LIBS Boost::headers)
251+
endif()
252+
253+
if(WIN32)
254+
# Boost headers contain #pragma commands on Windows which causes Boost
255+
# libraries to be linked in automatically. Custom boost installations
256+
# may find that these naming conventions don't always match and can
257+
# cause linker errors. This option disables this feature of Boost. Note
258+
# -DBOOST_ALL_NO_LIB can also be provided manually.
259+
if(OPENVDB_DISABLE_BOOST_IMPLICIT_LINKING)
260+
list(APPEND OPENVDB_CORE_DEPENDENT_LIBS
261+
Boost::disable_autolinking # add -DBOOST_ALL_NO_LIB
262+
)
258263
endif()
259264
endif()
260265

openvdb/openvdb/math/Math.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
#include <openvdb/Platform.h>
1212
#include <openvdb/version.h>
13+
#include <boost/numeric/conversion/conversion_traits.hpp>
1314
#include <algorithm> // for std::max()
1415
#include <cassert>
1516
#include <cmath> // for std::ceil(), std::fabs(), std::pow(), std::sqrt(), etc.
@@ -915,9 +916,10 @@ enum RotationOrder {
915916
ZXZ_ROTATION
916917
};
917918

918-
template <typename S, typename T, typename = std::enable_if_t<std::is_arithmetic_v<S>&& std::is_arithmetic_v<T>>>
919+
920+
template <typename S, typename T>
919921
struct promote {
920-
using type = typename std::common_type_t<S,T>;
922+
using type = typename boost::numeric::conversion_traits<S, T>::supertype;
921923
};
922924

923925
/// @brief Return the index [0,1,2] of the smallest value in a 3D vector.

pendingchanges/nanovdb.txt

Lines changed: 0 additions & 31 deletions
This file was deleted.

pendingchanges/vdb11.txt

Lines changed: 0 additions & 10 deletions
This file was deleted.

0 commit comments

Comments
 (0)