|
1 | 1 | OpenVDB Version History |
2 | 2 | ======================= |
3 | 3 |
|
4 | | -Version 12.0.2 - In development |
| 4 | +Version 12.1.0 - August 8, 2025 |
| 5 | + |
| 6 | + OpenVDB: |
| 7 | + New features: |
| 8 | + - New level set constructor tools::createLevelSetCapsule creates a grid |
| 9 | + containing a narrow-band level set representation of a capsule (tube |
| 10 | + with constant radius and sphere caps). |
| 11 | + - New level set constructor tools::createLevelSetTaperedCapsule creates a |
| 12 | + grid containing a narrow-band level set representation of a tapered |
| 13 | + capsule (tube with sphere caps and different radii at both ends, or |
| 14 | + equivalently the convex hull of two spheres with possibly different |
| 15 | + centers and radii). |
| 16 | + - New level set constructor tools::createLevelSetTubeComplex creates a grid |
| 17 | + containing a narrow-band level set representation of a tube complex (a |
| 18 | + collection of capsules or tapered capsules defined by endpoint coordinates |
| 19 | + and segment indices). |
| 20 | + - New level set constructor tools::createLevelSetDilatedMesh creates a grid |
| 21 | + containing a narrow-band level set representation of a dilated surface |
| 22 | + mesh (dilated by a radius in all directions). |
| 23 | + - New class tools::ConvexVoxelizer, used by the above methods, which can be |
| 24 | + inherited to implement a convex level set constructor. |
| 25 | + - Introduced anisotropic surfacing tools in points/PointRasterizeSDF.h and |
| 26 | + principal component analysis (PCA) methods in points/PrincipalComponentAnalysis.h. |
| 27 | + The latter tool analyses point neighborhoods and computes affine |
| 28 | + transformations representing elliptical distributions. The prior tool |
| 29 | + takes rotational and stretch point attributes (optionally computed from |
| 30 | + the prior PCA methods) and generates anisotropic surfaces. |
| 31 | + |
| 32 | + Improvements: |
| 33 | + - Significantly improved the performance of all LeafNode ValueIterators, |
| 34 | + up to 5x on some platforms and up to 10x when delay loading is enabled. |
| 35 | + Construction of a ValueIterator from a leaf node now requests the leaf |
| 36 | + buffers ahead of iteration to avoid potentially expensive API calls. |
| 37 | + - Improved the performance of PointRasterizeSDF.h tools with larger radii |
| 38 | + with better bound computation approximations. |
| 39 | + - Significant performance improvement to delay loaded files - the warning |
| 40 | + logic which checks the underlying mapped file for the last modified time |
| 41 | + has been removed, resulting in performance gains upwards of 10x when |
| 42 | + loading in node data buffers. Note that the check that was removed is |
| 43 | + entirely redundant on Windows and would only print a warning on other |
| 44 | + system. |
| 45 | + [Contributed by jjtParadox] |
| 46 | + - Added OPENVDB_HAS_INVOKABLE_MEMBER_FUNCTION and OPENVDB_HAS_MEMBER_FUNCTION |
| 47 | + macros to help determine the presence and compatibility of interface |
| 48 | + member functions at compile time. |
| 49 | + - Added OPENVDB_ASSUME macros to mimic builtin assume and C++23 assume |
| 50 | + attributes. |
| 51 | + - Improved read and write of PLY files with vdb_tool so they support Vec3d |
| 52 | + and 64 bit attributes. Changed vdb_tool version number from 10.6.1 to |
| 53 | + 10.7.0. |
| 54 | + |
| 55 | + API Changes: |
| 56 | + - Mat3 and Mat4 functions have been marked [[nodiscard]] where it may be |
| 57 | + confusing if they are operating in place or returning a result, in |
| 58 | + particular tranpose, invert, adjoint, and timesDiagonal. |
| 59 | + - Re-worked the API in PointRasterizeSDF.h with the addition of anisotropic |
| 60 | + surfacing kernels. The new API exposes more concise free functions which |
| 61 | + take structs of parameters. The old API remains supported but is |
| 62 | + deprecated. |
| 63 | + - Deprecated providing a filter or interrupter as arguments to |
| 64 | + points::rasterize. These can instead be implemented on user transfer |
| 65 | + schemes. |
| 66 | + - Transfer schemes provided to points::rasterize can now optionally |
| 67 | + implement a rasterizePoints callback that takes a range of points per |
| 68 | + voxel. |
| 69 | + |
| 70 | + Fixes: |
| 71 | + - Fixed a bug in points::rasterizeSpheres and points::rasterizeSmoothSpheres |
| 72 | + which could cause sections of the generated surface to incorrectly be |
| 73 | + marked as negative interior values. |
| 74 | + - Fixed a bug in points::rasterizeSmoothSpheres which could result in |
| 75 | + incomplete surface reconstruction with significantly larger search |
| 76 | + distances. |
| 77 | + - Fixed some precision issues in various Matrix methods. |
| 78 | + - Fixed bugs in vdb_tool that prevented build with newer namespaces in |
| 79 | + nanovdb. |
| 80 | + |
| 81 | + OpenVDB AX: |
| 82 | + Improvements: |
| 83 | + - Added support for LLVM versions greater than 15. Upgraded CI to test with |
| 84 | + LLVM versions 16, 17, 18, 19 and 20. |
| 85 | + - As of this release, LLVM 15 is the minimum required version for OpenVDB |
| 86 | + AX. Note that there is an issue with LLVM 17 symbols which makes it |
| 87 | + incompatible with the OpenVDB Python plugin. AS such, LLVM version 18 and |
| 88 | + greater are the recommended LLVM versions to use, with LLVM 18 being the |
| 89 | + new future minimum version. |
| 90 | + - Significant performance improvement to the compilation of AX kernels when |
| 91 | + using LLVM 18 and greater. |
| 92 | + - Significant backend refactoring to AX IR generation to support newer |
| 93 | + versions of LLVM. In particular, parts of the codegen::Function and |
| 94 | + codegen::FunctionBuilder API require new usage from LLVM 16 due to |
| 95 | + the LLVM opaque pointer changes. If you're not using the OpenVDB AX |
| 96 | + Function codegen API then no client changes should be necessary. |
| 97 | + - Migrated OpenVDB AX unit tests from cppunit to gtest |
| 98 | + [Contributed by Tim Straubinger] |
| 99 | + |
| 100 | + Fixes: |
| 101 | + - Fixed a case of undefined behaviour when explicitly casting variables to |
| 102 | + the same type as their storage type e.g: |
| 103 | + double a; double b = double(a); |
| 104 | + - Fixed an AX compiler error which would produce invalid IR when using 64bit |
| 105 | + integer variables for matrix array offsetting e.g: |
| 106 | + int64 a = 0; mat4f b = 1; float c = b[a,a]; |
| 107 | + |
| 108 | + NanoVDB: |
| 109 | + - Added nanovdb::openToIndexVDB, which can convert an OpenVDB grid into a |
| 110 | + NanoVDB IndexGrid. |
| 111 | + - Added new options "--index" and "--onIndex" to the command-line tool |
| 112 | + nanovdb_convert so it can produce IndexGrids. |
| 113 | + - Fixed memory leak in DeviceBuffer. |
| 114 | + - Added constructor for DeviceBuffer from an existing HostBuffer. |
| 115 | + - Added VoxelBlockManager, an acceleration structure for sequential access |
| 116 | + and stencil ops over active voxels. |
| 117 | + - Added helper functions for kernel launches with shared memory. |
| 118 | + - Added support for CUDA 13.0. |
| 119 | + - Fix warnings and compilation errors for GCC and Clang. |
| 120 | + - Fixed inconsistent usage of util::cuda::mallocAsync/freeAsync that |
| 121 | + affected vGPUs. |
| 122 | + - Added support for custom memory resources in PointsToGrid. |
| 123 | + - Fixed race condition in split/mergeGridHandles. |
| 124 | + - Fixed offset bug in nanovdb::tools::cuda::IndexToGrid related to non-POD |
| 125 | + build types. |
| 126 | + [Contributed by Andreas Henne] |
| 127 | + |
| 128 | + Houdini: |
| 129 | + - Define OP_InputIdx and OP_OutputIdx for Houdini 21.0 compatibility |
| 130 | + - Add Houdini 21 style camera interface to support LOP cameras |
| 131 | + - Include env flag for avoiding stream writing (was backported to 19.5) |
5 | 132 |
|
6 | 133 |
|
7 | 134 | Version 12.0.1 - April 3, 2025 |
8 | 135 |
|
9 | 136 | OpenVDB: |
10 | 137 | New features: |
11 | | - - Added read and write support for OFF (Object File Format) files to vdb_tool |
| 138 | + - Added read and write support for OFF (Object File Format) files to |
| 139 | + vdb_tool |
12 | 140 |
|
13 | 141 | Build: |
14 | | - - Fixed a build issue with vdb_render on Windows with newer versions of glew not including glu.h by default |
15 | | - - Fixed issues with newer versions of clang refusing to accept older ::template syntax |
| 142 | + - Fixed a build issue with vdb_render on Windows with newer versions of |
| 143 | + glew not including glu.h by default |
| 144 | + - Fixed issues with newer versions of clang refusing to accept older |
| 145 | + ::template syntax |
16 | 146 |
|
17 | 147 | NanoVDB: |
18 | 148 | New features: |
19 | 149 | - Added support for multiple GPUs to DeviceBuffer |
20 | 150 | - Added a UnifiedBuffer class that wraps CUDA unified memory |
21 | 151 | - Added example for multiGPU sparse convolution |
22 | 152 | - Added CUDA utility functions for device queries |
23 | | - - Added functions to independently stop and compute the elapsed time for timer classes |
| 153 | + - Added functions to independently stop and compute the elapsed time for |
| 154 | + timer classes |
24 | 155 |
|
25 | 156 | Improvements: |
26 | | - - Replaced CUB's CachingDeviceAllocator with the default asynchronous stream ordered allocator in PointsToGrid for improved performance |
| 157 | + - Replaced CUB's CachingDeviceAllocator with the default asynchronous |
| 158 | + stream ordered allocator in PointsToGrid for improved performance |
27 | 159 |
|
28 | 160 | Bug fix: |
29 | 161 | - Map is now properly transposed when converting NanoVDB to OpenVDB. |
|
0 commit comments