Cycles: Support building with OpenVDB 12

For the upcoming VFX platform upgrade.

Pull Request: https://projects.blender.org/blender/blender/pulls/131833
This commit is contained in:
Brecht Van Lommel
2024-12-13 15:27:26 +01:00
committed by Brecht Van Lommel
parent bd8edc7c27
commit 433264585f
2 changed files with 22 additions and 6 deletions

View File

@@ -55,23 +55,33 @@ struct ToNanoOp {
try {
# if NANOVDB_MAJOR_VERSION_NUMBER > 32 || \
(NANOVDB_MAJOR_VERSION_NUMBER == 32 && NANOVDB_MINOR_VERSION_NUMBER >= 6)
# if NANOVDB_MAJOR_VERSION_NUMBER > 32 || \
(NANOVDB_MAJOR_VERSION_NUMBER == 32 && NANOVDB_MINOR_VERSION_NUMBER >= 7)
/* OpenVDB 12. */
using nanovdb::tools::createNanoGrid;
using nanovdb::tools::StatsMode;
# else
/* OpenVDB 11. */
using nanovdb::createNanoGrid;
using nanovdb::StatsMode;
# endif
if constexpr (std::is_same_v<FloatGridType, openvdb::FloatGrid>) {
openvdb::FloatGrid floatgrid(*openvdb::gridConstPtrCast<GridType>(grid));
if (precision == 0) {
nanogrid = nanovdb::createNanoGrid<openvdb::FloatGrid, nanovdb::FpN>(floatgrid);
nanogrid = createNanoGrid<openvdb::FloatGrid, nanovdb::FpN>(floatgrid);
}
else if (precision == 16) {
nanogrid = nanovdb::createNanoGrid<openvdb::FloatGrid, nanovdb::Fp16>(floatgrid);
nanogrid = createNanoGrid<openvdb::FloatGrid, nanovdb::Fp16>(floatgrid);
}
else {
nanogrid = nanovdb::createNanoGrid<openvdb::FloatGrid, float>(floatgrid);
nanogrid = createNanoGrid<openvdb::FloatGrid, float>(floatgrid);
}
}
else if constexpr (std::is_same_v<FloatGridType, openvdb::Vec3fGrid>) {
openvdb::Vec3fGrid floatgrid(*openvdb::gridConstPtrCast<GridType>(grid));
nanogrid = nanovdb::createNanoGrid<openvdb::Vec3fGrid, nanovdb::Vec3f>(
floatgrid, nanovdb::StatsMode::Disable);
nanogrid = createNanoGrid<openvdb::Vec3fGrid, nanovdb::Vec3f>(floatgrid,
StatsMode::Disable);
}
# else
/* OpenVDB 10. */

View File

@@ -9,7 +9,13 @@
# include <openvdb/openvdb.h>
#endif
#ifdef WITH_NANOVDB
# include <nanovdb/util/GridHandle.h>
# include <nanovdb/NanoVDB.h>
# if NANOVDB_MAJOR_VERSION_NUMBER > 32 || \
(NANOVDB_MAJOR_VERSION_NUMBER == 32 && NANOVDB_MINOR_VERSION_NUMBER >= 7)
# include <nanovdb/GridHandle.h>
# else
# include <nanovdb/util/GridHandle.h>
# endif
#endif
#include "scene/image.h"