Skip to content

Commit 1bf3c6e

Browse files
authored
Merge pull request #785 from danrbailey/csgmerge
Faster CSG Operations
2 parents 67db967 + 0b2a905 commit 1bf3c6e

File tree

16 files changed

+4002
-653
lines changed

16 files changed

+4002
-653
lines changed

CHANGES

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

4-
Version 7.1.1 - In Development
4+
Version 7.2.0 - In Development
5+
6+
New features:
7+
- Added tree::DynamicNodeManager that lazily caches the nodes at each
8+
level of the tree to allow for efficient threading of topology-changing
9+
top-down workflows.
10+
- Added tools::CsgUnionOp, tools::CsgIntersectionOp and
11+
tools::CsgDifferenceOp that use a parallel breadth-first algorithm to
12+
accelerate CSG union, intersection and difference operations.
13+
- Added tools::TreeToMerge which provides methods to steal or deep-copy
14+
from a tree based on the tag dispatch class used in its construction.
515

616
Improvements:
717
- util::CpuTimer now uses C++11 chrono instead of TBB.
18+
- Threaded the construction of LeafManager and NodeManager linear arrays.
19+
- tools::csgUnion, tools::csgIntersection and tools::csgDifference now use
20+
the new parallel breadth-first algorithms for much faster performance.
21+
- Extended tree::NodeManager to allow for use with a const tree.
822

923
Houdini:
1024
- Fixed a bug in the OpenVDB Points Convert SOP where the auto voxel
@@ -19,6 +33,15 @@ Version 7.1.1 - In Development
1933
- Fixed a bug which could cause recursive compile time instantiations of
2034
TypeList objects, manifesting in longer compile times.
2135

36+
API changes:
37+
- Deprecated tree::LeafManager::getNodes. This method is no longer used when
38+
constructing a NodeManager from a LeafManager.
39+
- Deprecated Tree::visitActiveBBox, Tree::visit and Tree::visit2 methods in
40+
favor of using a tree::DynamicNodeManager.
41+
- Removed tools::CsgVisitorBase, tools::CsgVisitorUnion,
42+
tools::CsgVisitorIntersection and tools::CsgVisitorDifference. The CSG
43+
tools now use the parallel breath-first algorithms.
44+
2245
Build:
2346
- Removed the Makefiles.
2447
- Re-organised the repository layout such that each independent library

doc/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ set(DOXY_FILES
5151
doc/python.txt)
5252

5353
set(DOXYGEN_PROJECT_NAME "OpenVDB")
54-
set(DOXYGEN_PROJECT_NUMBER "7.1.1")
54+
set(DOXYGEN_PROJECT_NUMBER "7.2.0")
5555
set(DOXYGEN_PROJECT_BRIEF "")
5656
set(DOXYGEN_FILE_PATTERNS "*.h") # headers only
5757
set(DOXYGEN_IMAGE_PATH "doc/img")
@@ -85,7 +85,7 @@ set(DOXYGEN_ALIASES
8585
[[ijk="(<i>i</i>,&nbsp;<i>j</i>,&nbsp;<i>k</i>)"]]
8686
[[xyz="(<i>x</i>,&nbsp;<i>y</i>,&nbsp;<i>z</i>)"]]
8787
[[const="<tt>const</tt>"]]
88-
[["vdbnamespace=openvdb::v7_1"]]
88+
[["vdbnamespace=openvdb::v7_2"]]
8989
[["hunamespace=houdini_utils"]]
9090
[["hvdbnamespace=openvdb_houdini"]]
9191
# Use this command to create a link to an OpenVDB class, function, etc.
@@ -108,7 +108,7 @@ set(DOXYGEN_ALIASES
108108
)
109109

110110
set(DOXYGEN_PREDEFINED
111-
"OPENVDB_VERSION_NAME=v7_1"
111+
"OPENVDB_VERSION_NAME=v7_2"
112112
"OPENVDB_ABI_VERSION_NUMBER=7"
113113
[[__declspec(x):= __attribute__(x):=]]
114114
"OPENVDB_USE_LOG4CPLUS=")

doc/changes.txt

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,34 @@
22

33
@page changes Release Notes
44

5-
@htmlonly <a name="v7_1_1_changes"></a>@endhtmlonly
5+
@htmlonly <a name="v7_2_0_changes"></a>@endhtmlonly
66
@par
7-
<B>Version 7.1.1</B> - <I>In Development</I>
7+
<B>Version 7.2.0</B> - <I>In Development</I>
8+
9+
@par
10+
New features:
11+
- Added @vdblink::tree::DynamicNodeManager DynamicNodeManager@endlink that
12+
lazily caches the nodes at each level of the tree to allow for efficient
13+
threading of topology-changing top-down workflows.
14+
- Added @vdblink::tools::CsgUnionOp CsgUnionOp@endlink,
15+
@vdblink::tools::CsgIntersectionOp CsgIntersectionOp@endlink and
16+
@vdblink::tools::CsgDifferenceOp CsgDifferenceOp@endlink that use a parallel
17+
breadth-first algorithm to accelerate CSG union, intersection and difference
18+
operations.
19+
- Added @vdblink::tools::TreeToMerge TreeToMerge@endlink which provides methods
20+
to steal or deep-copy from a tree based on the tag dispatch class used in its
21+
construction.
822

923
@par
1024
Improvements:
1125
- util::CpuTimer now uses C++11 chrono instead of TBB.
26+
- Threaded the construction of LeafManager and NodeManager linear arrays.
27+
- @vdblink::tools::csgUnion() csgUnion@endlink,
28+
@vdblink::tools::csgIntersection() csgIntersection@endlink and
29+
@vdblink::tools::csgDifference() csgDifference@endlink now use the new
30+
parallel breadth-first algorithms for much faster performance.
31+
- Extended @vdblink::tree::NodeManager NodeManager@endlink to allow for use with
32+
a const tree.
1233

1334
@par
1435
Houdini:
@@ -25,6 +46,16 @@ Bug Fixes:
2546
- Fixed a bug which could cause recursive compile time instantiations of
2647
TypeList objects, manifesting in longer compile times.
2748

49+
@par
50+
API changes:
51+
- Deprecated tree::LeafManager::getNodes. This method is no longer used when
52+
constructing a NodeManager from a LeafManager.
53+
- Deprecated Tree::visitActiveBBox, Tree::visit and Tree::visit2 methods in
54+
favor of using a tree::DynamicNodeManager.
55+
- Removed tools::CsgVisitorBase, tools::CsgVisitorUnion,
56+
tools::CsgVisitorIntersection and tools::CsgVisitorDifference. The CSG tools
57+
now use the parallel breath-first algorithms.
58+
2859
@par
2960
Build:
3061
- Removed the Makefiles.

openvdb/openvdb/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@ set(OPENVDB_LIBRARY_TOOLS_INCLUDE_FILES
318318
tools/LevelSetTracker.h
319319
tools/LevelSetUtil.h
320320
tools/Mask.h
321+
tools/Merge.h
321322
tools/MeshToVolume.h
322323
tools/Morphology.h
323324
tools/MultiResGrid.h

openvdb/openvdb/Types.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1045,6 +1045,10 @@ class ShallowCopy {};
10451045
/// @brief Tag dispatch class that distinguishes topology copy constructors
10461046
/// from deep copy constructors
10471047
class TopologyCopy {};
1048+
/// @brief Tag dispatch class that distinguishes constructors that deep copy
1049+
class DeepCopy {};
1050+
/// @brief Tag dispatch class that distinguishes constructors that steal
1051+
class Steal {};
10481052
/// @brief Tag dispatch class that distinguishes constructors during file input
10491053
class PartialCreate {};
10501054

0 commit comments

Comments
 (0)