[packages/blender] - updated to 3.6.12 + upstream patch for openvdb 11

qboosh qboosh at pld-linux.org
Fri Jun 14 22:45:01 CEST 2024


commit aca63a46c07dae9d8a78a72189d34dfa5bb2881d
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Fri Jun 14 22:43:01 2024 +0200

    - updated to 3.6.12 + upstream patch for openvdb 11

 blender-openvdb11.patch | 83 +++++++++++++++++++++++++++++++++++++++++++++++++
 blender.spec            |  6 ++--
 2 files changed, 87 insertions(+), 2 deletions(-)
---
diff --git a/blender.spec b/blender.spec
index 0240467..80a400f 100644
--- a/blender.spec
+++ b/blender.spec
@@ -17,14 +17,15 @@ Summary:	3D modeling, rendering, animation and game creation package
 Summary(pl.UTF-8):	Pakiet do tworzenia animacji 3D oraz gier
 Name:		blender
 # beware: don't use 3.3.17+, they have all the libs packaged (0.5GB compressed)
-Version:	3.6.11
+Version:	3.6.12
 Release:	1
 License:	GPL v2+
 Group:		X11/Applications/Graphics
 Source0:	https://download.blender.org/source/%{name}-%{version}.tar.xz
-# Source0-md5:	32ec8c8403ead5e843edc1a26bdecb03
+# Source0-md5:	8ab5d1389185b12a2f2bfdde171524e3
 Patch0:		%{name}-2.76-droid.patch
 Patch1:		format-security.patch
+Patch2:		%{name}-openvdb11.patch
 URL:		https://www.blender.org/
 BuildRequires:	OpenAL-devel
 BuildRequires:	OpenCOLLADA-devel
@@ -107,6 +108,7 @@ Blender to darmowy i w pełni funkcjonalny pakiet do tworzenia animacji
 %setup -q
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
 
 # /usr/bin/env python3
 %{__sed} -i -e '1s,/usr/bin/env python3,%{__python3},' \
diff --git a/blender-openvdb11.patch b/blender-openvdb11.patch
new file mode 100644
index 0000000..adbc551
--- /dev/null
+++ b/blender-openvdb11.patch
@@ -0,0 +1,83 @@
+From bbb7e7a6d57f0b24d3b7374fb3747baf0d128d24 Mon Sep 17 00:00:00 2001
+From: Brecht Van Lommel <brecht at blender.org>
+Date: Sun, 10 Dec 2023 01:02:08 +0100
+Subject: [PATCH] Cycles: update to work with OpenVDB 11
+
+Ref #113157
+---
+ intern/cycles/scene/image_vdb.cpp | 49 ++++++++++++++++++++++++-------
+ 1 file changed, 38 insertions(+), 11 deletions(-)
+
+diff --git a/intern/cycles/scene/image_vdb.cpp b/intern/cycles/scene/image_vdb.cpp
+index 478b88c6d540..d94a7973adc7 100644
+--- a/intern/cycles/scene/image_vdb.cpp
++++ b/intern/cycles/scene/image_vdb.cpp
+@@ -11,6 +11,7 @@
+ #  include <openvdb/tools/Dense.h>
+ #endif
+ #ifdef WITH_NANOVDB
++#  define NANOVDB_USE_OPENVDB
+ #  include <nanovdb/util/OpenToNanoVDB.h>
+ #endif
+ 
+@@ -52,23 +53,49 @@ struct ToNanoOp {
+   {
+     if constexpr (!std::is_same_v<GridType, openvdb::MaskGrid>) {
+       try {
+-        FloatGridType floatgrid(*openvdb::gridConstPtrCast<GridType>(grid));
++#    if NANOVDB_MAJOR_VERSION_NUMBER > 32 || \
++        (NANOVDB_MAJOR_VERSION_NUMBER == 32 && NANOVDB_MINOR_VERSION_NUMBER >= 6)
++        /* OpenVDB 11. */
+         if constexpr (std::is_same_v<FloatGridType, openvdb::FloatGrid>) {
++          openvdb::FloatGrid floatgrid(*openvdb::gridConstPtrCast<GridType>(grid));
+           if (precision == 0) {
+-            nanogrid = nanovdb::openToNanoVDB<nanovdb::HostBuffer,
+-                                              typename FloatGridType::TreeType,
+-                                              nanovdb::FpN>(floatgrid);
+-            return true;
++            nanogrid = nanovdb::createNanoGrid<openvdb::FloatGrid, nanovdb::FpN>(floatgrid);
+           }
+           else if (precision == 16) {
+-            nanogrid = nanovdb::openToNanoVDB<nanovdb::HostBuffer,
+-                                              typename FloatGridType::TreeType,
+-                                              nanovdb::Fp16>(floatgrid);
+-            return true;
++            nanogrid = nanovdb::createNanoGrid<openvdb::FloatGrid, nanovdb::Fp16>(floatgrid);
++          }
++          else {
++            nanogrid = nanovdb::createNanoGrid<openvdb::FloatGrid, float>(floatgrid);
+           }
+         }
+-
+-        nanogrid = nanovdb::openToNanoVDB(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);
++        }
++#    else
++        /* OpenVDB 10. */
++        if constexpr (std::is_same_v<FloatGridType, openvdb::FloatGrid>) {
++          openvdb::FloatGrid floatgrid(*openvdb::gridConstPtrCast<GridType>(grid));
++          if (precision == 0) {
++            nanogrid =
++                nanovdb::openToNanoVDB<nanovdb::HostBuffer, openvdb::FloatTree, nanovdb::FpN>(
++                    floatgrid);
++          }
++          else if (precision == 16) {
++            nanogrid =
++                nanovdb::openToNanoVDB<nanovdb::HostBuffer, openvdb::FloatTree, nanovdb::Fp16>(
++                    floatgrid);
++          }
++          else {
++            nanogrid = nanovdb::openToNanoVDB(floatgrid);
++          }
++        }
++        else if constexpr (std::is_same_v<FloatGridType, openvdb::Vec3fGrid>) {
++          openvdb::Vec3fGrid floatgrid(*openvdb::gridConstPtrCast<GridType>(grid));
++          nanogrid = nanovdb::openToNanoVDB(floatgrid);
++        }
++#    endif
+       }
+       catch (const std::exception &e) {
+         VLOG_WARNING << "Error converting OpenVDB to NanoVDB grid: " << e.what();
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/blender.git/commitdiff/aca63a46c07dae9d8a78a72189d34dfa5bb2881d



More information about the pld-cvs-commit mailing list