Skip to content

Commit f6f9bd8

Browse files
authored
Merge pull request #1509 from AcademySoftwareFoundation/v10.0.0_rc
Merge v10.0.0_rc to master
2 parents 8526359 + be0e7a7 commit f6f9bd8

23 files changed

+282
-98
lines changed

CHANGES

Lines changed: 128 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,139 @@
11
OpenVDB Version History
22
=======================
33

4-
Version 9.1.1 - In development
4+
Version 10.0.0 - October 27, 2022
5+
6+
New Features:
7+
- Introducing OpenVDBLink, which provides a Mathematica interface to
8+
OpenVDB. This link ports over access to various grid containers including
9+
level sets, fog volumes, vector grids, integer grids, Boolean grids,
10+
and mask grids. Construction, modification, combinations, visualisations,
11+
queries, import, export, etc. can be achieved over grids too. Any
12+
Mathematica 3D region that's ConstantRegionQ and BoundedRegionQ can
13+
be represented as a level set grid, providing a more seamless integration
14+
with OpenVDB.
15+
- Introducing a new command-line tool, dubbed vdb_tool, that can combine any
16+
number of the of high-level tools available in openvdb/tools. For
17+
instance, it can convert a sequence of polygon meshes and particles to
18+
level sets, perform a large number of operations on these level set
19+
surfaces and export them as adaptive polyon meshes.
20+
- Added nanovdb::IndexGrid that allows for arbitrary voxel values and even
21+
multiple channels to be associated with NanoVDB grids. They are more
22+
flexible and memory efficient than regular grids at a small cost of
23+
random-access performance. IndexGrids are constructed with the new
24+
nanovdb::IndexGridBuilder and accessed with the new
25+
nanovdb::ChannelAccessor.
26+
- Added iterators to all tree node classes for visiting inactive, active, or
27+
all values and child nodes.
28+
- NanoVDB.h now includes standalone implementations of reading and writing
29+
uncompressed nanovdb grids buffers.
30+
- Added Stats::getExtrema, which computes the min/max values of all voxels
31+
in a NanoVDB grid that intersects with a user-defined bounding-box.
32+
- Added nanovdb::Mask::countOn(int) which is essential to the new
33+
nanovdb::IndexGrid.
34+
- Added RootNode::probeChild and InternalNode::probeChild.
35+
36+
Improvements:
37+
- Significantly improved the performance of all ValueAccessor methods which
38+
access LeafNode value buffer data. This improvement applies to any type
39+
which is delay load compatible (all default types except for bool and mask
40+
grids) and improves the performance of many OpenVDB tools.
41+
- Major updates to the command line interface of the vdb_ax binary, exposing
42+
more controls such as tile streaming, value iterator types and attribute
43+
bindings.
44+
- Improved the performance of volumeToMesh by 10-15%.
45+
- Added a new much improved nanovdb::NodeManager, that is both faster and
46+
more memory efficient, and that works on both the CPU and GPU. Note, it
47+
uses an handle for allocation (just like nanovdb::Grid) and replaces the
48+
old nanovdb::LeafManager which is now deprecated.
49+
- NanoToOpenVDB is extended to work with grids templated on Fp4, Fp8, Fp16,
50+
FpN, bool and ValueMask.
51+
- Rename RootNode::findTile to RootNode::probeTile and made it public.
52+
- Made Mask::getWord return both an const and non-const reference.
53+
- Improved unit-tests to use explicit 32B alignment (see aligment bug-fix
54+
below).
55+
- PNanoVDB.h (a C99 port of NanoVDB.h) has been updated.
556

657
Bug Fixes:
758
- Fixed an issue with tools::topologyToLevelSet which would previously
859
ignore active tiles in the input topology.
960
[Reported by Tobias Rittig]
61+
- Fixed a bug with ValueAccessor::addLeaf and ValueAccessor::addTile which
62+
wouldn't add the provided leaf nodes to the underlying tree. This bug did
63+
NOT affect the specialized accessors which are used by the default tree
64+
configuration.
65+
[Contributed by Andrey Zakirov]
66+
- Fixed a bug where ValueAccessor::probeNode<NodeT> and
67+
ValueAccessor:probeConstNode<NodeT> would return a nullptr if the NodeT
68+
type was not explicitly being cached by the accessor but the node existed
69+
in the tree.
70+
- Fixed a bug on Windows where math::Abs could truncate 64bit integer values.
71+
[Contributed by Edward Lam]
72+
- Fixed an occurance of undefined behaviour with math::floatToInt32 and
73+
math::doubleToInt64.
74+
[Reported by Vojtěch Bubník]
75+
- Fixed bugs in the sum merge that produced incorrect merged grids when
76+
deep-copying the input nodes or when non-zero background grids were being
77+
used.
78+
- Fixed a bug in FastSweeping where voxels/tiles are left with min/max float
79+
values.
80+
- Fixed a bug in math/Tuple.h that prevented compilation with VS2017.
81+
- Fixed a bug in nanovdb::HostBuffer that could produce crashes due to
82+
misaligned CPU memory allocations.
83+
- Fixed bug related to uninitialized memory in nanovdb::Grid which could
84+
confuse CRC32 checksum validation.
85+
- Fixed bugs related to the use of intrinsic functions for fast bit-counting
86+
in nanovdb.
87+
- Fixed a potential security vulnerability in NanoVDB.h related to buffer
88+
overflow exploits.
89+
90+
ABI changes:
91+
- ABI change to openvdb::RootNode, which now has a new member that defines
92+
the origin of the node. For now this origin is set to a default value of
93+
(0,0,0), but in the near future we will allow for offsets to improve
94+
access performance and reduce the memory footprints.
95+
- Removed deprecated virtual methods from AttributeArray.
96+
97+
API changes:
98+
- Removed PagedArray::push_back().
99+
- Removed Tree visitor methods from Tree, RootNode, InternalNode and
100+
LeafNode classes - visit(), visit2(), visitActiveBBox().
101+
- Removed LeafManager::getNodes().
102+
- Removed tools::dilateVoxels() and tools::erodeVoxels() in favor of
103+
tools::dilateActiveValues() and tools::erodeActiveValues().
104+
- Removed tools::FindActiveValues::any() and
105+
tools::FindActiveValues::none().
106+
- StringGrid and StringTrees have been removed.
107+
108+
Houdini:
109+
- Add convex hull activation for VDB Activate SOP (requires 19.5).
110+
- Improved SDF activation to use dynamic node manager.
111+
- Fixed a bug in VDB Visualize SOP where color values that exceed
112+
the range wrap around instead of being clamped.
113+
114+
Build:
115+
- Added OPENVDB_USE_DELAYED_LOAD flag that enables delayed loading and
116+
defaults to on.
117+
- Add a placeholder to inject the specific revision and URL used
118+
to build OpenVDB, useful for 3rd party build scripts to publish
119+
their exact versions.
120+
- Fixed an issue where OPENVDB_AX_DLL was not being defined on shared
121+
library builds of AX, resulting in symbols not being exported.
122+
[Reported by Ray Molenkamp]
123+
- Fixed an issue where setting Tbb_INCLUDE_DIR could cause CMake failures.
124+
- Updated FindTBB.cmake to support newer library ABI suffixing in
125+
TBB 2021.5.
126+
- Updated FindBlosc.cmake to better handle cases where blosc is built with
127+
external sources.
128+
- Resolved LLVM deprecation warnings in AX and added support for LLVM 14.
129+
- On Windows (MSVC), OpenVDB is now built with extra compiler options to
130+
ensure stricter C++ conformance: /permissive- /Zc:throwingNew /Zc:inline.
131+
- On Windows (MSVC), the _USE_MATH_DEFINES macro is no longer defined when
132+
including <openvdb/Platform.h> (or any dependent headers). If you were
133+
relying on this in your own project for M_PI, M_PI_2, etc. you can add
134+
-D_USE_MATH_DEFINES to your own project compiler options. See
135+
https://docs.microsoft.com/en-us/cpp/c-runtime-library/math-constants
136+
for more info.
10137

11138
Version 9.1.0 - June 9, 2022
12139

doc/changes.txt

Lines changed: 154 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,166 @@
22

33
@page changes Release Notes
44

5-
@htmlonly <a name="v9_1_1_changes"></a>@endhtmlonly
5+
@htmlonly <a name="v10_0_0_changes"></a>@endhtmlonly
66
@par
7-
<B>Version 9.1.1</B> - <I>In development</I>
7+
<B>Version 10.0.0</B> - <I>October 27, 2022</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+
Introducing OpenVDBLink, which provides a
19+
<A HREF="https://www.wolfram.com/mathematica/">Mathematica</A> interface to <A HREF="https://openvdb.org">OpenVDB</A>.
20+
</BLOCKQUOTE>
21+
22+
@par
23+
<BLOCKQUOTE>
24+
Introducing a new command line tool,
25+
dubbed <A HREF="https://github.com/AcademySoftwareFoundation/openvdb/tree/master/openvdb_cmd/vdb_tool">vdb_tool</A>,
26+
that can combine any number of the high-level tools available
27+
in <A HREF="https://github.com/AcademySoftwareFoundation/openvdb/tree/master/openvdb/openvdb/tools">openvdb/tools</A>.
28+
</BLOCKQUOTE>
29+
30+
@par
31+
New Features:
32+
- Introducing OpenVDBLink, which provides a Mathematica interface to
33+
OpenVDB. This link ports over access to various grid containers
34+
including level sets, fog volumes, vector grids, integer grids,
35+
Boolean grids, and mask grids. Construction, modification,
36+
combinations, visualisations, queries, import, export, etc.
37+
can be achieved over grids too. Any Mathematica 3D region
38+
that's ConstantRegionQ and BoundedRegionQ can be represented
39+
as a level set grid, providing a more seamless integration with
40+
OpenVDB.
41+
- Introducing a new command-line tool,
42+
dubbed <A HREF="https://github.com/AcademySoftwareFoundation/openvdb/tree/master/openvdb_cmd/vdb_tool">vdb_tool</A>,
43+
that can combine any number of the of high-level tools available
44+
in <A HREF="https://github.com/AcademySoftwareFoundation/openvdb/tree/master/openvdb/openvdb/tools">openvdb/tools</A>.
45+
For instance, it can convert a sequence of polygon meshes and particles to
46+
level sets, perform a large number of operations on these level set
47+
surfaces and export them as adaptive polyon meshes.
48+
- Added nanovdb::IndexGrid that allows for arbitrary voxel values and
49+
even multiple channels to be associated with NanoVDB grids. They are
50+
more flexible and memory efficient than regular grids at a small cost
51+
of random-access performance. IndexGrids are constructed with the new
52+
nanovdb::IndexGridBuilder and accessed with the new
53+
nanovdb::ChannelAccessor.
54+
- Added iterators to all tree node classes for visiting inactive,
55+
active, or all values and child nodes.
56+
- NanoVDB.h now includes standalone implementations of reading and
57+
writing uncompressed nanovdb grids buffers.
58+
- Added Stats::getExtrema, which computes the min/max values of all
59+
voxels in a NanoVDB grid that intersects with a user-defined bounding-box.
60+
- Added nanovdb::Mask::countOn(int) which is essential to the new
61+
nanovdb::IndexGrid.
62+
- Added RootNode::probeChild and InternalNode::probeChild.
63+
64+
@par
65+
Improvements:
66+
- Significantly improved the performance of all ValueAccessor methods which
67+
access LeafNode value buffer data. This improvement applies to any type which
68+
is delay load compatible (all default types except for bool and mask grids)
69+
and improves the performance of many OpenVDB tools.
70+
- Major updates to the command line interface of the vdb_ax binary, exposing
71+
more controls such as tile streaming, value iterator types and attribute
72+
bindings.
73+
- Improved the performance of volumeToMesh by 10-15%.
74+
- Added a new much improved nanovdb::NodeManager, that is both faster and
75+
more memory efficient, and that works on both the CPU and GPU. Note, it uses
76+
an handle for allocation (just like nanovdb::Grid) and replaces the old
77+
nanovdb::LeafManager which is now deprecated.
78+
- NanoToOpenVDB is extended to work with grids templated on Fp4, Fp8, Fp16,
79+
FpN, bool and ValueMask.
80+
- Rename RootNode::findTile to RootNode::probeTile and made it public.
81+
- Made Mask::getWord return both an const and non-const reference.
82+
- Improved unit-tests to use explicit 32B alignment (see aligment bug-fix below).
83+
- PNanoVDB.h (a C99 port of NanoVDB.h) has been updated.
884

985
@par
1086
Bug Fixes:
1187
- Fixed an issue with tools::topologyToLevelSet which would previously
12-
ignore active tiles in the input topology. [Reported by Tobias Rittig]
88+
ignore active tiles in the input topology. [Reported by Tobias Rittig]
89+
- Fixed a bug with ValueAccessor::addLeaf and ValueAccessor::addTile which
90+
wouldn't add the provided leaf nodes to the underlying tree. This bug did
91+
NOT affect the specialized accessors which are used by the default tree
92+
configuration. [Contributed by Andrey Zakirov]
93+
- Fixed a bug where ValueAccessor::probeNode<NodeT> and
94+
ValueAccessor:probeConstNode<NodeT> would return a nullptr if the NodeT type
95+
was not explicitly being cached by the accessor but the node existed in the
96+
tree.
97+
- Fixed a bug on Windows where math::Abs could truncate 64bit integer values.
98+
[Contributed by Edward Lam]
99+
- Fixed an occurance of undefined behaviour with math::floatToInt32 and
100+
math::doubleToInt64. [Reported by Vojtěch Bubník]
101+
- Fixed bugs in the sum merge that produced incorrect merged grids when
102+
deep-copying the input nodes or when non-zero background grids were being used.
103+
- Fixed a bug in FastSweeping where voxels/tiles are left with min/max float
104+
values.
105+
- Fixed a bug in math/Tuple.h that prevented compilation with VS2017.
106+
- Fixed a bug in nanovdb::HostBuffer that could produce crashes due
107+
to misaligned CPU memory allocations.
108+
- Fixed bug related to uninitialized memory in nanovdb::Grid which could
109+
confuse CRC32 checksum validation.
110+
- Fixed bugs related to the use of intrinsic functions for fast bit-counting
111+
in nanovdb.
112+
- Fixed a potential security vulnerability in NanoVDB.h related to buffer
113+
overflow exploits.
114+
115+
@par
116+
ABI changes:
117+
- ABI change to openvdb::RootNode, which now has a new member that defines
118+
the origin of the node. For now this origin is set to a default value of
119+
(0,0,0), but in the near future we will allow for offsets to improve access
120+
performance and reduce the memory footprints.
121+
- Removed deprecated virtual methods from AttributeArray.
122+
123+
@par
124+
API changes:
125+
- Removed PagedArray::push_back().
126+
- Removed Tree visitor methods from Tree, RootNode, InternalNode and LeafNode
127+
classes - visit(), visit2(), visitActiveBBox().
128+
- Removed LeafManager::getNodes().
129+
- Removed tools::dilateVoxels() and tools::erodeVoxels() in favor of
130+
tools::dilateActiveValues() and tools::erodeActiveValues().
131+
- Removed tools::FindActiveValues::any() and tools::FindActiveValues::none().
132+
- StringGrid and StringTrees have been removed.
133+
134+
@par
135+
Houdini:
136+
- Add convex hull activation for VDB Activate SOP (requires 19.5).
137+
- Improved SDF activation to use dynamic node manager.
138+
- Fixed a bug in VDB Visualize SOP where color values that exceed the range wrap
139+
around instead of being clamped.
13140

141+
@par
142+
Build:
143+
- Added OPENVDB_USE_DELAYED_LOAD flag that enables delayed loading and defaults
144+
to on.
145+
- Add a placeholder to inject the specific revision and URL used to build
146+
OpenVDB, useful for 3rd party build scripts to publish their exact versions.
147+
- Fixed an issue where OPENVDB_AX_DLL was not being defined on shared
148+
library builds of AX, resulting in symbols not being exported.
149+
[Reported by Ray Molenkamp]
150+
- Fixed an issue where setting Tbb_INCLUDE_DIR could cause CMake failures.
151+
- Updated FindTBB.cmake to support newer library ABI suffixing in TBB 2021.5.
152+
- Updated FindBlosc.cmake to better handle cases where blosc is built with
153+
external sources.
154+
- Resolved LLVM deprecation warnings in AX and added support for LLVM 14.
155+
- On Windows (MSVC), OpenVDB is now built with extra compiler options to
156+
ensure stricter C++ conformance: /permissive- /Zc:throwingNew /Zc:inline.
157+
- On Windows (MSVC), the _USE_MATH_DEFINES macro is no longer defined when
158+
including <openvdb/Platform.h> (or any dependent headers). If you were
159+
relying on this in your own project for M_PI, M_PI_2, etc. you can add
160+
-D_USE_MATH_DEFINES to your own project compiler options. See
161+
<A HREF="https://docs.microsoft.com/en-us/cpp/c-runtime-library/math-constants">this page</A>
162+
for more info.
163+
164+
@htmlonly <a name="v9_1_0_changes"></a>@endhtmlonly
14165
@par
15166
<B>Version 9.1.0</B> - <I>June 9, 2022</I>
16167

pendingchanges/accessors.txt

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

pendingchanges/activate_convex.txt

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

pendingchanges/ax_build.txt

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

pendingchanges/ax_cli.txt

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

pendingchanges/build_fixes.txt

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

pendingchanges/llvm_deprecations.txt

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

pendingchanges/math.txt

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

pendingchanges/msvc_conformance.txt

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

0 commit comments

Comments
 (0)