Overview

Request 1140402 accepted

- Disable 32-bit builds "ld error: access beyond end of merged
section"
- Minimum gcc-c++ version is 9.3.1, force gcc10 on 15.x
- Minimum TBB is 2020.3
- Update to 11.0.0:
* OpenVDB:
Improvements:
* Removed use of boost::any in favor of std::any.
Bug Fixes:
* Fix potential crash reading corrupt .vdb files with invalid blosc or zip chunks.
* NanoVDB:
Highlights:
* Several new tools to generate and modify NanoVDB grids on the GPU.
* New file format that supports streaming of raw grid buffers.
New Features:
* New memory efficient GridClass::IndexGrid that separates values from tree
* 4 new GridTypes (Index, OnIndex, IndexMask, OnIndexMask) used by IndexGrid
* Added createNanoGrid that replaces older conversion methods in GridBuilder.h, IndexGridBuilder.h and OpenToNanoVDB.h
* Added cudaPointsToGrid that constructs a point device grid from a list of points.
* Added cudaVoxelsToGrid that constructs a voxel device grid from a list of voxels.
* Added cuda/CudaUtils.h with several cuda utility functions.
* Added GpuTimer for timing of kernels in a specific cuda stream.
* Added cudaIndexToGrid that converts IndexGrids into regular Grids.
* Added cudaSignedFloodFill that performs signed-flood filling on the GPU.
* Added cudaAddBlindData that adds blind data to an existing grid on the GPU.
* Added cudaGridChecksum that computes checksums of device grids.
* Added cudaGridHandle that handles grids on the GPU.
* Added cudaNodeManager that constructs a NodeManager on the GPU.
* Added build type Points and GridType::PointIndex for point grids.
* Added GridType::Vec3u16 and GridType::Vec3u8 for compressed coordinates.
* Added PrefixSum.h for concurrent computation of prefix sum on the CPU.
API Changes:
* Version 32.6.0 (ABI is unchanged).
* Transition from C++11 to C++17
* Vec3R is deprecated, please use Vec3d instead.
* nanoToOpenVDB now takes the index of a NanoVDB in a GridHandle.
* GridData, InternalData and LeafData are now public.
* GridMetaData can be copied.
* Improvements to GridBuilder.h that allows construction of grids on CPU.
* GridHandle's move c-tor now requires the GridBuffer to contain a valid grid.
* Moved CudaDeviceBuffer.h to cuda/CudaDeviceBuffer.h.
* New API for acceleration of custom random-access with ValueAccessors.
* Added BitFlags class for convenient bit-mask operations.
* Added Vec2/3 min/maxComponentAtomic GPU methods.
* Added BBox::expandAtomic and BBox::intersectAtomic.
* Added Coord::expandAtomic.
* Added Map constructors.
* Added Mask::DenseIterator, Mask::setOnAtomic, and Mask::setOffAtomic.
* InternalNode::ChildIterator is now const-correct.
* Added several new NanoVDB Build Traits.
* Syncing PNanoVDB.h with NanoVDB.h.
Build:
* Support for OpenEXR 2.X has been removed.
* Better support for building with external package configurations with CMAKE_FIND_PACKAGE_PREFER_CONFIG=ON.
Python:
* Removed Python 2 support.
* Removed explicit bindings for Math types.
* Improved type casting for TypedMetadata.
- Disable static library build, instead of deleting it
- Remove many unused build dependencies
- Enable nanovdb as build conditional
- Update to version 9.0.0
* This version introduces ABI changes relative to older major
releases, so to preserve ABI compatibility it might be
necessary to define the macro OPENVDB_ABI_VERSION_NUMBER=N,
where, for example, N is 7 for Houdini 18.5 and 8 for Houdini
19.0.
* Official release of NanoVDB, which for the first time offers
GPU support for static sparse volumes in OpenVDB. See the
documentation for details.
* Faster build times from support for explicit template
instantiation, which is enabled by default for most of the
tools.
* Added support for OpenEXR 3. This is contributed by Cary
Phillips.
* Added transient data to the RootNode, InternalNode, and
LeafNode.
New features:
* NanoVDB, which for the first time offers GPU support for static
sparse volumes in OpenVDB.
Improvements:
* Added tools::countActiveLeafVoxels(),
tools::countInactiveVoxels(), tools::countInactiveLeafVoxels()
and tools::activeTiles() to perform multi-threaded counting.
The Tree methods now use these implementations.
* Moved from the deprecated TBB task scheduler to TBB arenas.
Various methods now respect the TBB arena state they were
invoked from.
* Introduced a new thread/Threading.h header to consolidate calls
to third-party threading methods.
* Minor performance improvements to dilation calls in fast
sweeping algorithms.
* Added hsvtogrb() and rgbtohsv() AX helper functions for
converting hue, saturation and value inputs to RGB values and
vice-versa.
* PointDataGrid conversion can now be performed using 32-bit
float arrays.
* Improved support for size_t grid types on systems where size_t
is a unique type. [Contributed by Brecht Van Lommel]
* Add support for dilation in one direction and extending a field
in one direction in fast sweeping algorithms.
* Added PNG support to vdb_render which can be enabled with
during CMake with -DUSE_PNG=ON.
* Explicit template instantiation has been enabled by default for
most of the tools. This pre-compiles template instantiations
into the core library to reduce the time spent compiling code
in downstream libraries or applications.
* Added a python binding for OpenVDB AX which allows you to
invoke accelerated AX code from the python module.
Bug Fixes:
* Fixed a bug where ax::run() would crash if it could not parse a
single statement.
ABI changes:
* Added transient data to the RootNode, InternalNode, and
LeafNode.
API changes:
* DynamicNodeManager can now set one grain size for threading
across leaf nodes and another for threading across non-leaf
nodes.
* StringGrid and StringTrees are deprecated.
* The NullInterrupter is now a virtual base class to help reduce
compile-time instantiation cost.
Houdini:
* Fix crash in VDB Combine in Copy B mode if the second input has
more VDBs than the first.
* VDB Vector Merge SOP is now VDB Vector From Scalar SOP to
distinguish it from the VDB Merge SOP. It keeps the same
internal name so this is merely a label change.
* Add option to pass in OPENVDB_DSO_NAMES to CMake to configure
which Houdini DSOs are compiled.
* VDB Activate SOP now has an option for the expansion pattern to
use for dilation.
* The label for Voxels to Expand is now Expand Voxels to match
Houdini.
* Fix bug to allow VDB LOD SOPs to be chained together.
* SOP Extrapolate supports dilation in one direction and
extending a field in one (domain) direction.
* The default OpenVDB ABI is now 8 for Houdini versions > 18.5.
* VDB Visualize Tree SOP is now multi-threaded and provides
slicing and color remapping.
* A new HoudiniInterrupter has been added that derives from the
NullInterrupter and the Interrupter is now deprecated. All the
SOPs have been updated to use the new HoudiniInterrupter.
* Add a sanitizer in SOP OpenVDB Extrapolate when expanding a
narrow-band level-set with a dilation value of 0, which will
result in no operation.
Build:
* Added support for TBB 2021.
* Enabled the OPENVDB_FUTURE_DEPRECATION variable by default to
warn on upcoming deprecations.
* Introduced a OPENVDB_DOXYGEN_INTERNAL CMake variable which is
ON by default and removes the majority of internal namespaces
from the generated doxygen.
* Improved the doxygen deprecation listings, folder layouts and
fixes issues when using later versions of doxygen.
* Build fixes for MinGW on Windows. [Contributed by Brecht
Sanders]
* Added support for OpenEXR 3. [Contributed by Cary Phillips]
* Added an OPENVDB_NAMESPACE_SUFFIX CMake string option which
provides the ability to customise the VDB namespace.
* The Python Module now appends the base directory defined by
Python_SITELIB to the default install path (typically
dist-packages or site-packages). [Contributed by Ignacio Vizzo]
* As of this release, VFX Reference Platform 2019 is no longer
supported. CMake now issues deprecation warnings for 2020 VFX
Reference Platform version dependencies.
* Build fixes for OpenVDB AX with C++17 and greater.
* Bumped the new blosc version future minimum to 1.17.0.
* OpenEXR is now optional for vdb_render. It can be enabled with
-DUSE_EXR=ON.
- Renenable vdb_render without OpenEXR
- Update constraints and limit memory for parallel build jobs
- Raise minimum c++ standard to 14
- do not depend on OpenEXR (do not build vdb_render) [bsc#1189344]
- Update to version 8.1.0
* A lot new features in the tools namespace are added
* Introduced Active Tile Streaming for volumes kernels.
* Significant performance improvements to AX volume kernels
* Significant performance improvements to large dilations with
tools::dilateActiveValues.
* Added an optional argument to Tree::topologyUnion which
preserves active tiles on the destination tree should they
overlap leaf nodes from the source tree.
* Reduced the time spent in the hot path of initialize and
uninitialize by leveraging atomics with double-checked locks.
* Support TBB 2021
* Significant performance improvements to tools::activate and
tools::deactivate through use of the DynamicNodeManager to
parallelize tile processing.
* Added degree() and radians() AX helper functions for converting
radians to degrees and vice versa, respectively.
* Added adjoint(), cofactor() and inverse() AX matrix functions.
* Added sort(), argsort(), isfinite(), isinf() and isnan() AX functions
* Add missing 8-bit and 16-bit attribute type registration.
* Fixed a crash in OpenVDB AX when declaring arrays with non-scalar elements
* Fixed a bug in OpenVDB AX which would cause an error when
multiplying a vec3 by a mat4.
* Fixed a bug in AX which could cause string allocations in loops
to overflow the stack
* Fixed a bug where the ValueOff iterator for the AX VolumeExecutable
could remove child branches of a VDB tree.
* Fixed a crash in the AX Houdini SOP with an empty PointDataGrid input.
* Fixed a crash when calling openvdb::points::pointOffsets with an
empty PointDataGrid input.
* Fixed a bug in the new CSG intersection merge algorithm where data
outside of the intersection region was not being removed.
* Fixed multiple memory leaks
* API changes:
* Restructured the internals of Morphology.h and moved tools::activate
and tools::deactivate to a new header, Activate.h.
* Deprecated tools::dilateVoxels and tools::erodeVoxels in favour of
new morphology methods.
* The tools::Film class no longer has a saveExr method in any build
configuration.
* Added ability to run tools::activate and tools::deactivate single-threaded.
* Grid::isTreeUnique is now virtual as of ABI=8 so that it can be accessed
from the GridBase.
* Private method RootNode::getChildCount() has been removed as of ABI=8.
* Mark map classes and functions as final for ABI=8 where beneficial to allow
devirtualization optimization.
* As of ABI 8, Vector, Matrix and Quaternion types now satisfy the Trivial Type
requirement. Their empty constructors and copy constructors have been removed
* As of ABI 8, removed an unnecessary specialization of NodeUnion and CopyTraits
from NodeUnion.h. Replaced std::is_pod usage with std::is_trivially_copyable
* As of ABI 8, PointDataGrids use the union NodeUnion specialization,
reducing the memory footprint of their topology by 50%.
* Removed a number of deprecated point, volume and AX methods.
* Deprecated tree::LeafManager::getNodes.
* Deprecated Tree::visitActiveBBox, Tree::visit and Tree::visit2 methods
* Removed tools::CsgVisitorBase, tools::CsgVisitorUnion,
tools::CsgVisitorIntersection and tools::CsgVisitorDifference.
* Moved openvdb::TypeList from Types.h into its own header TypeList.h
* Full changes: https://academysoftwarefoundation.github.io/openvdb/changes.html#v8_1_0_changes
- update to 7.1.0:
- Added a novel parallel sparse FastSweeping class that outperforms our
existing techniques for computing signed distance fields in addition to
supporting velocity extension.
- Added tools::fogToSdf which converts a scalar (fog) volume into a signed
distance field.
- Added tools::sdfToSdf which re-normalizes a signed distance field;
- Added tools::fogToExt which extends an arbitrary field (e.g. velocity)
off the iso-surface of a scalar (fog) volume.
- Added tools::sdfToExt which extends an arbitrary field (e.g. velocity)
off the iso-surface of a signed distance field.
- Added tools::fogToSdfAndExt which computes a signed distance and extends
an arbitrary field (e.g. velocity) off the iso-surface of a signed
distance field.
- Added tools::fogToSdfAndExt which re-normalizes a signed distance and
extends an arbitrary field (e.g. velocity) off the iso-surface of a
signed distance field.
- Added tools::dilateSdf which dilates a signed distance field.
- Added tools::maskSdf which extends an existing signed distance into a
user-defined mask.
- Added Grid::isTreeUnique() to tell if the tree is shared with another
grid.
- Added PointDataLeafNode::stealAttributeSet() and
AttributeSet::removeAttribute() for releasing ownership of attribute
data.
- Added AttributeSet::Descriptor::groupIndexCollision() for detecting
group index collisions when attempting to merge two Descriptors.
- Added RootNode::childCount(), InternalNode::childCount() and
LeafNode::childCount() to count the number of immediate child nodes that
exist below the current node.
Improvements:
- Added GroupWriteHandle::setUnsafe() for faster performance when the group
array is known to be in-core and non-uniform.
- Add support for default value metadata when creating AttributeArrays or
appending to an AttributeSet.
- Added new group inspection methods to the AttributeSet::Descriptor.
- Introduced a StringMetaCache class for convenient string attribute
metadata lookup and performed some minor optimizations.
- Removed redundant floor in points::floatingPointToFixedPoint.
- Add gitignore to repository root.
- Removed some logic for compilers older than Visual Studio 2019.
- Add a new Houdini ABI test binary.
- Fixed an indexing typo in tools::Filter. [Contributed by Yuanming Hu]
- Removed redundant null pointer checks. [Contributed by Kuba Roth]
- Added support for vdb_view on Windows. Requires GLEW.
- Removed support for GLFW 2.
- vdb_view now uses OPENVDB_LOG_FATAL when catching exceptions.
- vdb_view, vdb_print and vdb_render now use std::terminate() when catching
an unknown exception.
- Removed Boost::thread as a dependency of vdb_view in favour of
std::thread.
- Removed usage of boost/integer.hpp and boost/math/constants/constants.hpp,
the latter in favour of new openvdb math constants for pi
- Removed usage of boost/mpl/*.hpp methods in favour of new template
meta-programming methods on the openvdb::TypeList struct. This now
supports get, front, back, contains, index, unique, popback, popfront
and range removal of types.
- Changed the tree::NodeChain implementation to use an openvdb::TypeList
rather than a boost::mpl::vector and updated all usage of tree::NodeChain
accordingly.
Bug fixes:
- Fixed a bug where grids with no active values might return true when the
method evalActiveVoxelBoundingBox is called. The correct behavior is to
only return true if the grid contains any active values.
- Fixed a sign propagation bug in tools::traceExteriorBoundaries() used by
tools::meshToVolume(). This could cause values to not be propagated across
node boundaries, leading to voxels incorrectly being marked as inside the
isosurface. [Contributed by Tristan Barback]
- Fixed a rotation order bug in tools::local_util::decompose()
that caused it to fail to decompose some matrices.
- Fixed a bug where math::Quat::inverse() was not marked as const.
[Contributed by Michael Tao]
- Fixed a bug in the unit test for util::CpuTimer on Windows by using a
more accurate sleep implementation.
- add 8G memory constraint
- add tools subpackage for the command line programs
- Version 7.0.0 - December 6, 2019
Some changes in this release (see "ABI changes" below) alter
the grid ABI so that it is incompatible with earlier versions
of the OpenVDB library, such as the ones built into Houdini
up to and including Houdini 18.0. To preserve ABI compatibility,
when compiling OpenVDB or any dependent code define the macro
OPENVDB_ABI_VERSION_NUMBER=N, where, for example, N is 5 for
Houdini 17.0 and 17.5 and 6 for Houdini 18.0.
As of this release, a C++14 compiler is required and the oldest
supported Houdini version is 17.0.
New features:
- LevelSetMeasure can now compute multiple types of curvatures (averge and total
Gaussian and mean curvature) as well as Euler characteristic and genus of
level set surfaces.
- Most stencil classes now have an intersection method that detcts the axial
directions of zero-crossings (as oppose to the existing boolean intersection test).
- The CurvatureStencil can now compute Gaussian and principal
curvatures (in addition to mean curvature).
- Added Tree::nodeCount, which counts the number and type of nodes
in a tree very efficiently.
- Added new RootNode::addChild() and InternalNode::addChild() methods to
allow the insertion of child nodes directly.
Improvements:
- The minimum ABI for OpenVDB is now always enforced through CMake
separately from other minimum dependency version variables.
- Added support for CMake 3.12 compatible Xxx_ROOT variables.
- Replaced the CMake USE_SYSTEM_LIBRARY_PATHS option with
DISABLE_CMAKE_SEARCH_PATHS and removed the hard coded list of
SYSTEM_LIBRARY_PATHS in favor of using CMake's default search procedure.
SYSTEM_LIBRARY_PATHS can still be used as a global list of paths for all
dependency searches.
- Improvements to OpenVDB's CMake module setup order in regards to CMake
policy, minimum version and project calls.
- Replaced occurrences of boost::scoped_array with std::unique_ptr.
- Added an OPENVDB_SIMD option to CMake to optionally define SSE4.2 and
AVX compiler flags, this is switched off by default.
- Made various small changes to improve Visual Studio compatiblity and
deprecate some logic for compilers older than Visual Studio 2017.
- Standardized CMake install locations using GNUInstallDirs. Importantly,
this changes the default library installation folder from lib to lib64
on some 64-bit systems, or to lib/multiarch-tuple on Debian
[Contributed by David Aguilar]
- Added SIMD intrinsics to a few common NodeMask methods.
[Contributed by Konstantin]
Bug fixes:
- Fixed a bug in FindJemalloc.cmake where paths were not being handled
correctly.
- Fixed a Windows build issue in openvdb_render.
- Fixed a non deterministic threading bug in tools::meshToVolume() during
polygon voxelization which could result in different distance values.
ABI changes:
- OpFactory destructor is now virtual as of ABI=7
- Added new virtual methods for copying const grids and replacing
the metadata and/or the transform - GridBase::copyGridReplacingMetadata,
GridBase::copyGridReplacingTransform and
GridBase::copyGridReplacingMetadataAndTransform.
- AttributeArray copy constructor is now thread-safe.
API changes:
- VolumeToMesh::pointList() and VolumeToMesh::polygonPoolList() now return
a std::unique_ptr instead of a boost::scoped_array.
- AttributeArray::copyUncompressed() is now deprecated.
Python:
- Removed the requirement of CMake 3.14 for NumPy usage.
- Added support for Boost versions 1.65 and later when building
the Python module with NumPy support through CMake.
- Improved CMake Python3 support.
- The Python Module is now disabled by default in CMake.
Houdini:
- Fixed a bug in the Points Convert SOP during conversion from
Houdini geometry to OpenVDB Points, where point group information
could end up corrupted or cause a crash with non-contiguous
point offsets (mesh inputs).
- Threaded the population of point group memberships during conversion
from Houdini geometry to OpenVDB Points
- Added logic to the Rasterize Points SOP to suppress the output of
non-finite attribute values due to subnormal input densities.
- Introduced a position compression option to the Scatter SOP for VDB
Points and default to 16-bit fixed point.
- adjust to so version 7_0
- Update to Version 6.2.1 - September 30, 2019
Bug fixes:
- Fixed a crash that arose from an inadvertent ABI change of an I/O class
with the 6.2.0 release. The crash occured when attempting to write out
a point data grid using an I/O routine from a different version of
OpenVDB than the one with which the grid was authored and when
one of those OpenVDB versions was 6.2.0.
- Update to Version 6.2.0 - September 18, 2019
New features:
- Added tools::FindActiveValues, which counts the active values
in a tree that intersect a given bounding box.
- Added io::DelayedLoadMetadata, which stores mask offsets and compression
sizes on write to accelerate delayed load reading.
Improvements:
- LeafNode::modifyValue() and LeafNode::modifyValueAndActiveState()
now modify voxel values in place for improved performance.
- Added math::isInfinite() and math::isNan() to resolve Visual Studio
compatibility issues with integer types.
- Made minor performance improvements to moving and filtering VDB points.
- Improved performance related to a mutex contention when appending
multiple AttributeArrays in parallel through various point operations.
- Significantly improved the performance of createLevelSetSphere()
using threading.
- Improved directory and file path lookups of some CMake commands in
the root CMakeLists.txt
[Reported by Daniel Elliott]
- Improved CMake support for GLFW versions 3.1 and later.
- FindOpenVDB.cmake now correctly propagates CXX version requirements.
- Added CMake support for linking against Jemalloc and TBB malloc
and enabled Jemalloc by default for Linux and non-Maya builds
and TBB malloc for all other builds.
- Added a USE_COLORED_OUTPUT option to CMake to display compiler output
in color.
- Added an OPENVDB_CODE_COVERAGE option to CMake.
- CMake now automatically detects and configures the CXX11 ABI requirement
for Houdini builds.
- CMake now issues deprecation warnings for 2017 VFX Reference Platform
version dependencies. In particular, C++11-only compilers are now
deprecated; OpenVDB 7.0 will require a C++14-compatible compiler.
Bug fixes:
- Replaced std::vector with std::deque as the underlying container
for util::PagedArray, to address a rare crash when reading
from multiple threads while writing from another thread.
- Fixed a bug that could cause an empty CoordBBox to report nonzero volume.
- Fixed a bug in tools::computeScalarPotential() that could produce
a corrupt result due to invalid memory access.
[Reported by Edwin Braun]
- Partially reverted tools::ClosestSurfacePoint's distance calculations
to their pre-OpenVDB 5.0 behavior to address a bug in the
fillWithSpheres() tool that caused generated spheres to sometimes
extend outside the target volume.
- CMake now correctly sets rpaths for the unit test binary.
- Addressed a Valgrind warning by allocating the AttributeArray registry
using a Meyers singleton.
[Contributed by Autodesk]
ABI changes:
- ABI versions 3 and older are now deprecated, and support for them will be
removed in a future release. Until then, define the macro
OPENVDB_USE_DEPRECATED_ABI (or set the CMake OPENVDB_USE_DEPRECATED_ABI
option to ON) to suppress deprecation messages when compiling OpenVDB or
dependent code.
API changes:
- Changed points::RandomLeafFilter::LeafMap from a std::map to
a std::unordered_map.
- Removed the TableT template argument from util::PagedArray.
The table type is now hardcoded to std::deque.
- The minimum supported version of GLFW is now 3.1.
Python:
- CMake now always produces a .so for the Python module on Unix
and Linux platforms.
- Fixed a compile-time error when building the Python module for Python 3.
[Reported by yurivict]
Houdini:
- OpenVDB SOPs are now displayed in an ASWF sub-menu of the VDB tab menu.
- Added API documentation and examples.
- Added openvdb_houdini::GEOvdbApply(), which invokes a functor
on a VDB primitive if the resolved grid type is a member of
a given type list.
- Fixed a regression in the Fill SOP that caused it to modify VDBs
in the input detail.
- The Combine SOP no longer crashes in Copy B mode when the destination
is not a VDB.
- Added a houdini_utils::OpFactory::addSpareData() method
and addOperatorSpareData() and getOperatorSpareData() functions
to manage spare data associated with operator types.
- Added an opsparedata HScript command and hou.NodeType.spareData()
and hou.NodeType.spareDataDict() methods to retrieve spare data
associated with operator types.
- Added a pythonrc.py startup script to set the tab menu visibility
of nodes and their native Houdini equivalents, based on an
OPENVDB_OPHIDE_POLICY environment variable.
- Added a houdini_utils::OpFactory::setInvisible() method to hide nodes
from tab menus.
- Added an OpenVDBOpFactory::setNativeName() method to pair OpenVDB nodes
with their native Houdini equivalents.
- Added a houdini_utils::OpPolicy::getTabSubMenuPath() method to allow
OpPolicy subclasses to provide their own tab sub-menu path.
- OpenVDB nodes now override OP_Operator::getVersion() to return
a version string of the form "vdb6.2.0 houdini18.0.222".
- Clean up spec file, remove superfluous parameterization
- Replace cmake(TBB) BuildRequires with equivalent tbb-devel, the
latter is also available on Leap 15.x.
- Trim bias and metadata redundancies from description.
- Then openSUSE %ix86 platforms are not guaranteed to have SSE.
- version 6.1.0: initial build

Loading...
Request History
Benjamin Greiner's avatar

bnavigator created request

- Disable 32-bit builds "ld error: access beyond end of merged
section"
- Minimum gcc-c++ version is 9.3.1, force gcc10 on 15.x
- Minimum TBB is 2020.3
- Update to 11.0.0:
* OpenVDB:
Improvements:
* Removed use of boost::any in favor of std::any.
Bug Fixes:
* Fix potential crash reading corrupt .vdb files with invalid blosc or zip chunks.
* NanoVDB:
Highlights:
* Several new tools to generate and modify NanoVDB grids on the GPU.
* New file format that supports streaming of raw grid buffers.
New Features:
* New memory efficient GridClass::IndexGrid that separates values from tree
* 4 new GridTypes (Index, OnIndex, IndexMask, OnIndexMask) used by IndexGrid
* Added createNanoGrid that replaces older conversion methods in GridBuilder.h, IndexGridBuilder.h and OpenToNanoVDB.h
* Added cudaPointsToGrid that constructs a point device grid from a list of points.
* Added cudaVoxelsToGrid that constructs a voxel device grid from a list of voxels.
* Added cuda/CudaUtils.h with several cuda utility functions.
* Added GpuTimer for timing of kernels in a specific cuda stream.
* Added cudaIndexToGrid that converts IndexGrids into regular Grids.
* Added cudaSignedFloodFill that performs signed-flood filling on the GPU.
* Added cudaAddBlindData that adds blind data to an existing grid on the GPU.
* Added cudaGridChecksum that computes checksums of device grids.
* Added cudaGridHandle that handles grids on the GPU.
* Added cudaNodeManager that constructs a NodeManager on the GPU.
* Added build type Points and GridType::PointIndex for point grids.
* Added GridType::Vec3u16 and GridType::Vec3u8 for compressed coordinates.
* Added PrefixSum.h for concurrent computation of prefix sum on the CPU.
API Changes:
* Version 32.6.0 (ABI is unchanged).
* Transition from C++11 to C++17
* Vec3R is deprecated, please use Vec3d instead.
* nanoToOpenVDB now takes the index of a NanoVDB in a GridHandle.
* GridData, InternalData and LeafData are now public.
* GridMetaData can be copied.
* Improvements to GridBuilder.h that allows construction of grids on CPU.
* GridHandle's move c-tor now requires the GridBuffer to contain a valid grid.
* Moved CudaDeviceBuffer.h to cuda/CudaDeviceBuffer.h.
* New API for acceleration of custom random-access with ValueAccessors.
* Added BitFlags class for convenient bit-mask operations.
* Added Vec2/3 min/maxComponentAtomic GPU methods.
* Added BBox::expandAtomic and BBox::intersectAtomic.
* Added Coord::expandAtomic.
* Added Map constructors.
* Added Mask::DenseIterator, Mask::setOnAtomic, and Mask::setOffAtomic.
* InternalNode::ChildIterator is now const-correct.
* Added several new NanoVDB Build Traits.
* Syncing PNanoVDB.h with NanoVDB.h.
Build:
* Support for OpenEXR 2.X has been removed.
* Better support for building with external package configurations with CMAKE_FIND_PACKAGE_PREFER_CONFIG=ON.
Python:
* Removed Python 2 support.
* Removed explicit bindings for Math types.
* Improved type casting for TypedMetadata.
- Disable static library build, instead of deleting it
- Remove many unused build dependencies
- Enable nanovdb as build conditional
- Update to version 9.0.0
* This version introduces ABI changes relative to older major
releases, so to preserve ABI compatibility it might be
necessary to define the macro OPENVDB_ABI_VERSION_NUMBER=N,
where, for example, N is 7 for Houdini 18.5 and 8 for Houdini
19.0.
* Official release of NanoVDB, which for the first time offers
GPU support for static sparse volumes in OpenVDB. See the
documentation for details.
* Faster build times from support for explicit template
instantiation, which is enabled by default for most of the
tools.
* Added support for OpenEXR 3. This is contributed by Cary
Phillips.
* Added transient data to the RootNode, InternalNode, and
LeafNode.
New features:
* NanoVDB, which for the first time offers GPU support for static
sparse volumes in OpenVDB.
Improvements:
* Added tools::countActiveLeafVoxels(),
tools::countInactiveVoxels(), tools::countInactiveLeafVoxels()
and tools::activeTiles() to perform multi-threaded counting.
The Tree methods now use these implementations.
* Moved from the deprecated TBB task scheduler to TBB arenas.
Various methods now respect the TBB arena state they were
invoked from.
* Introduced a new thread/Threading.h header to consolidate calls
to third-party threading methods.
* Minor performance improvements to dilation calls in fast
sweeping algorithms.
* Added hsvtogrb() and rgbtohsv() AX helper functions for
converting hue, saturation and value inputs to RGB values and
vice-versa.
* PointDataGrid conversion can now be performed using 32-bit
float arrays.
* Improved support for size_t grid types on systems where size_t
is a unique type. [Contributed by Brecht Van Lommel]
* Add support for dilation in one direction and extending a field
in one direction in fast sweeping algorithms.
* Added PNG support to vdb_render which can be enabled with
during CMake with -DUSE_PNG=ON.
* Explicit template instantiation has been enabled by default for
most of the tools. This pre-compiles template instantiations
into the core library to reduce the time spent compiling code
in downstream libraries or applications.
* Added a python binding for OpenVDB AX which allows you to
invoke accelerated AX code from the python module.
Bug Fixes:
* Fixed a bug where ax::run() would crash if it could not parse a
single statement.
ABI changes:
* Added transient data to the RootNode, InternalNode, and
LeafNode.
API changes:
* DynamicNodeManager can now set one grain size for threading
across leaf nodes and another for threading across non-leaf
nodes.
* StringGrid and StringTrees are deprecated.
* The NullInterrupter is now a virtual base class to help reduce
compile-time instantiation cost.
Houdini:
* Fix crash in VDB Combine in Copy B mode if the second input has
more VDBs than the first.
* VDB Vector Merge SOP is now VDB Vector From Scalar SOP to
distinguish it from the VDB Merge SOP. It keeps the same
internal name so this is merely a label change.
* Add option to pass in OPENVDB_DSO_NAMES to CMake to configure
which Houdini DSOs are compiled.
* VDB Activate SOP now has an option for the expansion pattern to
use for dilation.
* The label for Voxels to Expand is now Expand Voxels to match
Houdini.
* Fix bug to allow VDB LOD SOPs to be chained together.
* SOP Extrapolate supports dilation in one direction and
extending a field in one (domain) direction.
* The default OpenVDB ABI is now 8 for Houdini versions > 18.5.
* VDB Visualize Tree SOP is now multi-threaded and provides
slicing and color remapping.
* A new HoudiniInterrupter has been added that derives from the
NullInterrupter and the Interrupter is now deprecated. All the
SOPs have been updated to use the new HoudiniInterrupter.
* Add a sanitizer in SOP OpenVDB Extrapolate when expanding a
narrow-band level-set with a dilation value of 0, which will
result in no operation.
Build:
* Added support for TBB 2021.
* Enabled the OPENVDB_FUTURE_DEPRECATION variable by default to
warn on upcoming deprecations.
* Introduced a OPENVDB_DOXYGEN_INTERNAL CMake variable which is
ON by default and removes the majority of internal namespaces
from the generated doxygen.
* Improved the doxygen deprecation listings, folder layouts and
fixes issues when using later versions of doxygen.
* Build fixes for MinGW on Windows. [Contributed by Brecht
Sanders]
* Added support for OpenEXR 3. [Contributed by Cary Phillips]
* Added an OPENVDB_NAMESPACE_SUFFIX CMake string option which
provides the ability to customise the VDB namespace.
* The Python Module now appends the base directory defined by
Python_SITELIB to the default install path (typically
dist-packages or site-packages). [Contributed by Ignacio Vizzo]
* As of this release, VFX Reference Platform 2019 is no longer
supported. CMake now issues deprecation warnings for 2020 VFX
Reference Platform version dependencies.
* Build fixes for OpenVDB AX with C++17 and greater.
* Bumped the new blosc version future minimum to 1.17.0.
* OpenEXR is now optional for vdb_render. It can be enabled with
-DUSE_EXR=ON.
- Renenable vdb_render without OpenEXR
- Update constraints and limit memory for parallel build jobs
- Raise minimum c++ standard to 14
- do not depend on OpenEXR (do not build vdb_render) [bsc#1189344]
- Update to version 8.1.0
* A lot new features in the tools namespace are added
* Introduced Active Tile Streaming for volumes kernels.
* Significant performance improvements to AX volume kernels
* Significant performance improvements to large dilations with
tools::dilateActiveValues.
* Added an optional argument to Tree::topologyUnion which
preserves active tiles on the destination tree should they
overlap leaf nodes from the source tree.
* Reduced the time spent in the hot path of initialize and
uninitialize by leveraging atomics with double-checked locks.
* Support TBB 2021
* Significant performance improvements to tools::activate and
tools::deactivate through use of the DynamicNodeManager to
parallelize tile processing.
* Added degree() and radians() AX helper functions for converting
radians to degrees and vice versa, respectively.
* Added adjoint(), cofactor() and inverse() AX matrix functions.
* Added sort(), argsort(), isfinite(), isinf() and isnan() AX functions
* Add missing 8-bit and 16-bit attribute type registration.
* Fixed a crash in OpenVDB AX when declaring arrays with non-scalar elements
* Fixed a bug in OpenVDB AX which would cause an error when
multiplying a vec3 by a mat4.
* Fixed a bug in AX which could cause string allocations in loops
to overflow the stack
* Fixed a bug where the ValueOff iterator for the AX VolumeExecutable
could remove child branches of a VDB tree.
* Fixed a crash in the AX Houdini SOP with an empty PointDataGrid input.
* Fixed a crash when calling openvdb::points::pointOffsets with an
empty PointDataGrid input.
* Fixed a bug in the new CSG intersection merge algorithm where data
outside of the intersection region was not being removed.
* Fixed multiple memory leaks
* API changes:
* Restructured the internals of Morphology.h and moved tools::activate
and tools::deactivate to a new header, Activate.h.
* Deprecated tools::dilateVoxels and tools::erodeVoxels in favour of
new morphology methods.
* The tools::Film class no longer has a saveExr method in any build
configuration.
* Added ability to run tools::activate and tools::deactivate single-threaded.
* Grid::isTreeUnique is now virtual as of ABI=8 so that it can be accessed
from the GridBase.
* Private method RootNode::getChildCount() has been removed as of ABI=8.
* Mark map classes and functions as final for ABI=8 where beneficial to allow
devirtualization optimization.
* As of ABI 8, Vector, Matrix and Quaternion types now satisfy the Trivial Type
requirement. Their empty constructors and copy constructors have been removed
* As of ABI 8, removed an unnecessary specialization of NodeUnion and CopyTraits
from NodeUnion.h. Replaced std::is_pod usage with std::is_trivially_copyable
* As of ABI 8, PointDataGrids use the union NodeUnion specialization,
reducing the memory footprint of their topology by 50%.
* Removed a number of deprecated point, volume and AX methods.
* Deprecated tree::LeafManager::getNodes.
* Deprecated Tree::visitActiveBBox, Tree::visit and Tree::visit2 methods
* Removed tools::CsgVisitorBase, tools::CsgVisitorUnion,
tools::CsgVisitorIntersection and tools::CsgVisitorDifference.
* Moved openvdb::TypeList from Types.h into its own header TypeList.h
* Full changes: https://academysoftwarefoundation.github.io/openvdb/changes.html#v8_1_0_changes
- update to 7.1.0:
- Added a novel parallel sparse FastSweeping class that outperforms our
existing techniques for computing signed distance fields in addition to
supporting velocity extension.
- Added tools::fogToSdf which converts a scalar (fog) volume into a signed
distance field.
- Added tools::sdfToSdf which re-normalizes a signed distance field;
- Added tools::fogToExt which extends an arbitrary field (e.g. velocity)
off the iso-surface of a scalar (fog) volume.
- Added tools::sdfToExt which extends an arbitrary field (e.g. velocity)
off the iso-surface of a signed distance field.
- Added tools::fogToSdfAndExt which computes a signed distance and extends
an arbitrary field (e.g. velocity) off the iso-surface of a signed
distance field.
- Added tools::fogToSdfAndExt which re-normalizes a signed distance and
extends an arbitrary field (e.g. velocity) off the iso-surface of a
signed distance field.
- Added tools::dilateSdf which dilates a signed distance field.
- Added tools::maskSdf which extends an existing signed distance into a
user-defined mask.
- Added Grid::isTreeUnique() to tell if the tree is shared with another
grid.
- Added PointDataLeafNode::stealAttributeSet() and
AttributeSet::removeAttribute() for releasing ownership of attribute
data.
- Added AttributeSet::Descriptor::groupIndexCollision() for detecting
group index collisions when attempting to merge two Descriptors.
- Added RootNode::childCount(), InternalNode::childCount() and
LeafNode::childCount() to count the number of immediate child nodes that
exist below the current node.
Improvements:
- Added GroupWriteHandle::setUnsafe() for faster performance when the group
array is known to be in-core and non-uniform.
- Add support for default value metadata when creating AttributeArrays or
appending to an AttributeSet.
- Added new group inspection methods to the AttributeSet::Descriptor.
- Introduced a StringMetaCache class for convenient string attribute
metadata lookup and performed some minor optimizations.
- Removed redundant floor in points::floatingPointToFixedPoint.
- Add gitignore to repository root.
- Removed some logic for compilers older than Visual Studio 2019.
- Add a new Houdini ABI test binary.
- Fixed an indexing typo in tools::Filter. [Contributed by Yuanming Hu]
- Removed redundant null pointer checks. [Contributed by Kuba Roth]
- Added support for vdb_view on Windows. Requires GLEW.
- Removed support for GLFW 2.
- vdb_view now uses OPENVDB_LOG_FATAL when catching exceptions.
- vdb_view, vdb_print and vdb_render now use std::terminate() when catching
an unknown exception.
- Removed Boost::thread as a dependency of vdb_view in favour of
std::thread.
- Removed usage of boost/integer.hpp and boost/math/constants/constants.hpp,
the latter in favour of new openvdb math constants for pi
- Removed usage of boost/mpl/*.hpp methods in favour of new template
meta-programming methods on the openvdb::TypeList struct. This now
supports get, front, back, contains, index, unique, popback, popfront
and range removal of types.
- Changed the tree::NodeChain implementation to use an openvdb::TypeList
rather than a boost::mpl::vector and updated all usage of tree::NodeChain
accordingly.
Bug fixes:
- Fixed a bug where grids with no active values might return true when the
method evalActiveVoxelBoundingBox is called. The correct behavior is to
only return true if the grid contains any active values.
- Fixed a sign propagation bug in tools::traceExteriorBoundaries() used by
tools::meshToVolume(). This could cause values to not be propagated across
node boundaries, leading to voxels incorrectly being marked as inside the
isosurface. [Contributed by Tristan Barback]
- Fixed a rotation order bug in tools::local_util::decompose()
that caused it to fail to decompose some matrices.
- Fixed a bug where math::Quat::inverse() was not marked as const.
[Contributed by Michael Tao]
- Fixed a bug in the unit test for util::CpuTimer on Windows by using a
more accurate sleep implementation.
- add 8G memory constraint
- add tools subpackage for the command line programs
- Version 7.0.0 - December 6, 2019
Some changes in this release (see "ABI changes" below) alter
the grid ABI so that it is incompatible with earlier versions
of the OpenVDB library, such as the ones built into Houdini
up to and including Houdini 18.0. To preserve ABI compatibility,
when compiling OpenVDB or any dependent code define the macro
OPENVDB_ABI_VERSION_NUMBER=N, where, for example, N is 5 for
Houdini 17.0 and 17.5 and 6 for Houdini 18.0.
As of this release, a C++14 compiler is required and the oldest
supported Houdini version is 17.0.
New features:
- LevelSetMeasure can now compute multiple types of curvatures (averge and total
Gaussian and mean curvature) as well as Euler characteristic and genus of
level set surfaces.
- Most stencil classes now have an intersection method that detcts the axial
directions of zero-crossings (as oppose to the existing boolean intersection test).
- The CurvatureStencil can now compute Gaussian and principal
curvatures (in addition to mean curvature).
- Added Tree::nodeCount, which counts the number and type of nodes
in a tree very efficiently.
- Added new RootNode::addChild() and InternalNode::addChild() methods to
allow the insertion of child nodes directly.
Improvements:
- The minimum ABI for OpenVDB is now always enforced through CMake
separately from other minimum dependency version variables.
- Added support for CMake 3.12 compatible Xxx_ROOT variables.
- Replaced the CMake USE_SYSTEM_LIBRARY_PATHS option with
DISABLE_CMAKE_SEARCH_PATHS and removed the hard coded list of
SYSTEM_LIBRARY_PATHS in favor of using CMake's default search procedure.
SYSTEM_LIBRARY_PATHS can still be used as a global list of paths for all
dependency searches.
- Improvements to OpenVDB's CMake module setup order in regards to CMake
policy, minimum version and project calls.
- Replaced occurrences of boost::scoped_array with std::unique_ptr.
- Added an OPENVDB_SIMD option to CMake to optionally define SSE4.2 and
AVX compiler flags, this is switched off by default.
- Made various small changes to improve Visual Studio compatiblity and
deprecate some logic for compilers older than Visual Studio 2017.
- Standardized CMake install locations using GNUInstallDirs. Importantly,
this changes the default library installation folder from lib to lib64
on some 64-bit systems, or to lib/multiarch-tuple on Debian
[Contributed by David Aguilar]
- Added SIMD intrinsics to a few common NodeMask methods.
[Contributed by Konstantin]
Bug fixes:
- Fixed a bug in FindJemalloc.cmake where paths were not being handled
correctly.
- Fixed a Windows build issue in openvdb_render.
- Fixed a non deterministic threading bug in tools::meshToVolume() during
polygon voxelization which could result in different distance values.
ABI changes:
- OpFactory destructor is now virtual as of ABI=7
- Added new virtual methods for copying const grids and replacing
the metadata and/or the transform - GridBase::copyGridReplacingMetadata,
GridBase::copyGridReplacingTransform and
GridBase::copyGridReplacingMetadataAndTransform.
- AttributeArray copy constructor is now thread-safe.
API changes:
- VolumeToMesh::pointList() and VolumeToMesh::polygonPoolList() now return
a std::unique_ptr instead of a boost::scoped_array.
- AttributeArray::copyUncompressed() is now deprecated.
Python:
- Removed the requirement of CMake 3.14 for NumPy usage.
- Added support for Boost versions 1.65 and later when building
the Python module with NumPy support through CMake.
- Improved CMake Python3 support.
- The Python Module is now disabled by default in CMake.
Houdini:
- Fixed a bug in the Points Convert SOP during conversion from
Houdini geometry to OpenVDB Points, where point group information
could end up corrupted or cause a crash with non-contiguous
point offsets (mesh inputs).
- Threaded the population of point group memberships during conversion
from Houdini geometry to OpenVDB Points
- Added logic to the Rasterize Points SOP to suppress the output of
non-finite attribute values due to subnormal input densities.
- Introduced a position compression option to the Scatter SOP for VDB
Points and default to 16-bit fixed point.
- adjust to so version 7_0
- Update to Version 6.2.1 - September 30, 2019
Bug fixes:
- Fixed a crash that arose from an inadvertent ABI change of an I/O class
with the 6.2.0 release. The crash occured when attempting to write out
a point data grid using an I/O routine from a different version of
OpenVDB than the one with which the grid was authored and when
one of those OpenVDB versions was 6.2.0.
- Update to Version 6.2.0 - September 18, 2019
New features:
- Added tools::FindActiveValues, which counts the active values
in a tree that intersect a given bounding box.
- Added io::DelayedLoadMetadata, which stores mask offsets and compression
sizes on write to accelerate delayed load reading.
Improvements:
- LeafNode::modifyValue() and LeafNode::modifyValueAndActiveState()
now modify voxel values in place for improved performance.
- Added math::isInfinite() and math::isNan() to resolve Visual Studio
compatibility issues with integer types.
- Made minor performance improvements to moving and filtering VDB points.
- Improved performance related to a mutex contention when appending
multiple AttributeArrays in parallel through various point operations.
- Significantly improved the performance of createLevelSetSphere()
using threading.
- Improved directory and file path lookups of some CMake commands in
the root CMakeLists.txt
[Reported by Daniel Elliott]
- Improved CMake support for GLFW versions 3.1 and later.
- FindOpenVDB.cmake now correctly propagates CXX version requirements.
- Added CMake support for linking against Jemalloc and TBB malloc
and enabled Jemalloc by default for Linux and non-Maya builds
and TBB malloc for all other builds.
- Added a USE_COLORED_OUTPUT option to CMake to display compiler output
in color.
- Added an OPENVDB_CODE_COVERAGE option to CMake.
- CMake now automatically detects and configures the CXX11 ABI requirement
for Houdini builds.
- CMake now issues deprecation warnings for 2017 VFX Reference Platform
version dependencies. In particular, C++11-only compilers are now
deprecated; OpenVDB 7.0 will require a C++14-compatible compiler.
Bug fixes:
- Replaced std::vector with std::deque as the underlying container
for util::PagedArray, to address a rare crash when reading
from multiple threads while writing from another thread.
- Fixed a bug that could cause an empty CoordBBox to report nonzero volume.
- Fixed a bug in tools::computeScalarPotential() that could produce
a corrupt result due to invalid memory access.
[Reported by Edwin Braun]
- Partially reverted tools::ClosestSurfacePoint's distance calculations
to their pre-OpenVDB 5.0 behavior to address a bug in the
fillWithSpheres() tool that caused generated spheres to sometimes
extend outside the target volume.
- CMake now correctly sets rpaths for the unit test binary.
- Addressed a Valgrind warning by allocating the AttributeArray registry
using a Meyers singleton.
[Contributed by Autodesk]
ABI changes:
- ABI versions 3 and older are now deprecated, and support for them will be
removed in a future release. Until then, define the macro
OPENVDB_USE_DEPRECATED_ABI (or set the CMake OPENVDB_USE_DEPRECATED_ABI
option to ON) to suppress deprecation messages when compiling OpenVDB or
dependent code.
API changes:
- Changed points::RandomLeafFilter::LeafMap from a std::map to
a std::unordered_map.
- Removed the TableT template argument from util::PagedArray.
The table type is now hardcoded to std::deque.
- The minimum supported version of GLFW is now 3.1.
Python:
- CMake now always produces a .so for the Python module on Unix
and Linux platforms.
- Fixed a compile-time error when building the Python module for Python 3.
[Reported by yurivict]
Houdini:
- OpenVDB SOPs are now displayed in an ASWF sub-menu of the VDB tab menu.
- Added API documentation and examples.
- Added openvdb_houdini::GEOvdbApply(), which invokes a functor
on a VDB primitive if the resolved grid type is a member of
a given type list.
- Fixed a regression in the Fill SOP that caused it to modify VDBs
in the input detail.
- The Combine SOP no longer crashes in Copy B mode when the destination
is not a VDB.
- Added a houdini_utils::OpFactory::addSpareData() method
and addOperatorSpareData() and getOperatorSpareData() functions
to manage spare data associated with operator types.
- Added an opsparedata HScript command and hou.NodeType.spareData()
and hou.NodeType.spareDataDict() methods to retrieve spare data
associated with operator types.
- Added a pythonrc.py startup script to set the tab menu visibility
of nodes and their native Houdini equivalents, based on an
OPENVDB_OPHIDE_POLICY environment variable.
- Added a houdini_utils::OpFactory::setInvisible() method to hide nodes
from tab menus.
- Added an OpenVDBOpFactory::setNativeName() method to pair OpenVDB nodes
with their native Houdini equivalents.
- Added a houdini_utils::OpPolicy::getTabSubMenuPath() method to allow
OpPolicy subclasses to provide their own tab sub-menu path.
- OpenVDB nodes now override OP_Operator::getVersion() to return
a version string of the form "vdb6.2.0 houdini18.0.222".
- Clean up spec file, remove superfluous parameterization
- Replace cmake(TBB) BuildRequires with equivalent tbb-devel, the
latter is also available on Leap 15.x.
- Trim bias and metadata redundancies from description.
- Then openSUSE %ix86 platforms are not guaranteed to have SSE.
- version 6.1.0: initial build


Benjamin Greiner's avatar

bnavigator accepted request

openSUSE Build Service is sponsored by