Commit: 579d88551cf90d768aa7312f8427ab72c3c58fdf
Author: Kévin Dietrich
Date:   Sun May 17 21:04:26 2015 +0200
Branches: openvdb
https://developer.blender.org/rB579d88551cf90d768aa7312f8427ab72c3c58fdf

Improvements to compilation with CMake: set flags to be able to build
with or without OpenVDB.

Scons support should follow.

===================================================================

M       CMakeLists.txt
M       build_files/cmake/config/blender_full.cmake
M       build_files/cmake/config/blender_lite.cmake
M       intern/cycles/CMakeLists.txt
M       intern/cycles/kernel/kernel.cpp
M       intern/cycles/kernel/kernel_globals.h
M       intern/cycles/kernel/kernel_types.h
M       intern/cycles/kernel/svm/svm.h
M       intern/cycles/kernel/svm/svm_openvdb.h
M       intern/cycles/render/nodes.cpp
M       intern/cycles/render/openvdb.cpp
M       intern/cycles/render/openvdb.h
M       intern/cycles/util/CMakeLists.txt
M       intern/cycles/util/util_openvdb.h
M       release/scripts/startup/bl_ui/properties_physics_smoke.py
M       source/blender/blenkernel/intern/smoke.c
M       source/blender/nodes/shader/nodes/node_shader_openvdb.c
M       source/blenderplayer/CMakeLists.txt

===================================================================

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f54c659..360b4aa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1764,6 +1764,14 @@ elseif(WIN32)
                        set(SDL_LIBPATH ${SDL}/lib)
                endif()
 
+               if(WITH_OPENVDB)
+                       set(OPENVDB ${LIBDIR}/openvdb)
+                       set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include)
+                       set(OPENVDB_LIBRARIES openvdb ${TBB_LIBRARIES})
+                       set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
+                       set(OPENVDB_DEFINITIONS)
+               endif()
+
                set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
 
                ## DISABLE - causes linking errors 
@@ -2058,6 +2066,14 @@ elseif(APPLE)
                set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
        endif()
 
+       if(WITH_OPENVDB)
+               set(OPENVDB ${LIBDIR}/openvdb)
+               set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include)
+               set(OPENVDB_LIBRARIES openvdb ${TBB_LIBRARIES})
+               set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
+               set(OPENVDB_DEFINITIONS)
+       endif()
+
        if(WITH_LLVM)
                set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH     "Path to the 
LLVM installation")
                set(LLVM_VERSION "3.4" CACHE STRING     "Version of LLVM to 
use")
@@ -2820,6 +2836,7 @@ if(FIRST_RUN)
        info_cfg_option(WITH_CYCLES)
        info_cfg_option(WITH_FREESTYLE)
        info_cfg_option(WITH_OPENCOLORIO)
+       info_cfg_option(WITH_OPENVDB)
 
        info_cfg_text("Compiler Options:")
        info_cfg_option(WITH_BUILDINFO)
diff --git a/build_files/cmake/config/blender_full.cmake 
b/build_files/cmake/config/blender_full.cmake
index d41f97a..76afbb0 100644
--- a/build_files/cmake/config/blender_full.cmake
+++ b/build_files/cmake/config/blender_full.cmake
@@ -43,6 +43,7 @@ set(WITH_OPENCOLLADA         ON  CACHE BOOL "" FORCE)
 set(WITH_OPENCOLORIO         ON  CACHE BOOL "" FORCE)
 set(WITH_OPENMP              ON  CACHE BOOL "" FORCE)
 set(WITH_OPENNL              ON  CACHE BOOL "" FORCE)
+set(WITH_OPENVDB             ON  CACHE BOOL "" FORCE)
 set(WITH_PYTHON_INSTALL      ON  CACHE BOOL "" FORCE)
 set(WITH_RAYOPTIMIZATION     ON  CACHE BOOL "" FORCE)
 set(WITH_SDL                 ON  CACHE BOOL "" FORCE)
diff --git a/build_files/cmake/config/blender_lite.cmake 
b/build_files/cmake/config/blender_lite.cmake
index 3a70201..29c5818 100644
--- a/build_files/cmake/config/blender_lite.cmake
+++ b/build_files/cmake/config/blender_lite.cmake
@@ -47,6 +47,7 @@ set(WITH_OPENCOLORIO         OFF CACHE BOOL "" FORCE)
 set(WITH_OPENIMAGEIO         OFF CACHE BOOL "" FORCE)
 set(WITH_OPENMP              OFF CACHE BOOL "" FORCE)
 set(WITH_OPENNL              OFF CACHE BOOL "" FORCE)
+set(WITH_OPENVDB             OFF CACHE BOOL "" FORCE)
 set(WITH_PYTHON_INSTALL      OFF CACHE BOOL "" FORCE)
 set(WITH_RAYOPTIMIZATION     OFF CACHE BOOL "" FORCE)
 set(WITH_SDL                 OFF CACHE BOOL "" FORCE)
diff --git a/intern/cycles/CMakeLists.txt b/intern/cycles/CMakeLists.txt
index 573511b..2e1565c 100644
--- a/intern/cycles/CMakeLists.txt
+++ b/intern/cycles/CMakeLists.txt
@@ -146,6 +146,10 @@ if(WITH_CYCLES_OSL)
        )
 endif()
 
+if(WITH_OPENVDB)
+       add_definitions(-DWITH_OPENVDB)
+endif()
+
 add_definitions(
        -DWITH_OPENCL
        -DWITH_CUDA
diff --git a/intern/cycles/kernel/kernel.cpp b/intern/cycles/kernel/kernel.cpp
index 7817c67..e5c95b8 100644
--- a/intern/cycles/kernel/kernel.cpp
+++ b/intern/cycles/kernel/kernel.cpp
@@ -33,6 +33,7 @@ void kernel_const_copy(KernelGlobals *kg, const char *name, 
void *host, size_t s
 {
        if(strcmp(name, "__data") == 0)
                memcpy(&kg->__data, host, size);
+#ifdef __OPENVDB__
        else if(strcmp(name, "__vdb_float_samplers_p") == 0)
                
kg->vdb_float_samplers_p.insert(kg->vdb_float_samplers_p.begin() + size, 
(vdb_fsampler_p *)host);
        else if(strcmp(name, "__vdb_float_samplers_b") == 0)
@@ -41,6 +42,7 @@ void kernel_const_copy(KernelGlobals *kg, const char *name, 
void *host, size_t s
                
kg->vdb_vec3s_samplers_p.insert(kg->vdb_vec3s_samplers_p.begin() + size, 
(vdb_vsampler_p *)host);
        else if(strcmp(name, "__vdb_vec3s_samplers_b") == 0)
                
kg->vdb_vec3s_samplers_b.insert(kg->vdb_vec3s_samplers_b.begin() + size, 
(vdb_vsampler_b *)host);
+#endif
        else
                assert(0);
 }
diff --git a/intern/cycles/kernel/kernel_globals.h 
b/intern/cycles/kernel/kernel_globals.h
index f168440..ba8ccc6 100644
--- a/intern/cycles/kernel/kernel_globals.h
+++ b/intern/cycles/kernel/kernel_globals.h
@@ -38,11 +38,13 @@ typedef struct KernelGlobals {
        texture_image_uchar4 texture_byte_images[MAX_BYTE_IMAGES];
        texture_image_float4 texture_float_images[MAX_FLOAT_IMAGES];
 
+#ifdef __OPENVDB__
        /* We can't use arrays here as grid samplers don't have a default 
constructor */
        vector<vdb_fsampler_p*> vdb_float_samplers_p;
        vector<vdb_fsampler_b*> vdb_float_samplers_b;
        vector<vdb_vsampler_p*> vdb_vec3s_samplers_p;
        vector<vdb_vsampler_b*> vdb_vec3s_samplers_b;
+#endif
 
 #define KERNEL_TEX(type, ttype, name) ttype name;
 #define KERNEL_IMAGE_TEX(type, ttype, name)
diff --git a/intern/cycles/kernel/kernel_types.h 
b/intern/cycles/kernel/kernel_types.h
index d8c47e4..4abc0d7 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -67,6 +67,9 @@ CCL_NAMESPACE_BEGIN
 #ifdef WITH_OSL
 #define __OSL__
 #endif
+#ifdef WITH_OPENVDB
+#define __OPENVDB__
+#endif
 #define __SUBSURFACE__
 #define __CMJ__
 #define __VOLUME__
diff --git a/intern/cycles/kernel/svm/svm.h b/intern/cycles/kernel/svm/svm.h
index 9ec4c55..864cd05 100644
--- a/intern/cycles/kernel/svm/svm.h
+++ b/intern/cycles/kernel/svm/svm.h
@@ -436,9 +436,11 @@ ccl_device_noinline void svm_eval_nodes(KernelGlobals *kg, 
ShaderData *sd, Shade
                        case NODE_NORMAL_MAP:
                                svm_node_normal_map(kg, sd, stack, node);
                                break;
+#ifdef __OPENVDB__
                        case NODE_OPENVDB:
                                svm_node_openvdb(kg, sd, stack, node);
                                break;
+#endif
                        case NODE_END:
                        default:
                                return;
diff --git a/intern/cycles/kernel/svm/svm_openvdb.h 
b/intern/cycles/kernel/svm/svm_openvdb.h
index 1722f40..c47e278 100644
--- a/intern/cycles/kernel/svm/svm_openvdb.h
+++ b/intern/cycles/kernel/svm/svm_openvdb.h
@@ -16,6 +16,8 @@
 
 CCL_NAMESPACE_BEGIN
 
+#ifdef __OPENVDB__
+
 ccl_device void svm_node_openvdb(KernelGlobals *kg, ShaderData *sd, float 
*stack, uint4 node)
 {
        float3 co = sd->P;
@@ -56,5 +58,7 @@ ccl_device void svm_node_openvdb(KernelGlobals *kg, 
ShaderData *sd, float *stack
 #endif
 }
 
+#endif
+
 CCL_NAMESPACE_END
 
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp
index d18f1a0..627cc2b 100644
--- a/intern/cycles/render/nodes.cpp
+++ b/intern/cycles/render/nodes.cpp
@@ -4371,7 +4371,11 @@ OpenVDBNode::OpenVDBNode()
 {
        filename = "";
        vdb_manager = NULL;
+#ifdef WITH_OPENVDB
        sampling = OPENVDB_SAMPLE_POINT;
+#else
+       sampling = 0;
+#endif
 }
 
 void OpenVDBNode::attributes(Shader *shader, AttributeRequestSet *attributes)
diff --git a/intern/cycles/render/openvdb.cpp b/intern/cycles/render/openvdb.cpp
index 4693129..dc86372 100644
--- a/intern/cycles/render/openvdb.cpp
+++ b/intern/cycles/render/openvdb.cpp
@@ -21,28 +21,16 @@
 
 CCL_NAMESPACE_BEGIN
 
-static inline void catch_exceptions()
-{
-       try {
-               throw;
-       }
-       /* OpenVDB exceptions all derive from std::exception so it should be 
fine */
-       catch (const std::exception &e) {
-               std::cerr << e.what() << std::endl;
-       }
-       catch (...) {
-               std::cerr << "Unknown error in OpenVDB library..." << std::endl;
-       }
-}
+#ifdef WITH_OPENVDB
 
 OpenVDBManager::OpenVDBManager()
 {
        openvdb::initialize();
-       need_update = true;
        float_samplers_p.reserve(64);
        float_samplers_b.reserve(64);
        vec3s_samplers_p.reserve(64);
        vec3s_samplers_b.reserve(64);
+       need_update = true;
 }
 
 OpenVDBManager::~OpenVDBManager()
@@ -53,6 +41,20 @@ OpenVDBManager::~OpenVDBManager()
        vec3s_samplers_b.clear();
 }
 
+static inline void catch_exceptions()
+{
+       try {
+               throw;
+       }
+       /* OpenVDB exceptions all derive from std::exception so it should be 
fine */
+       catch (const std::exception &e) {
+               std::cerr << e.what() << std::endl;
+       }
+       catch (...) {
+               std::cerr << "Unknown error in OpenVDB library..." << std::endl;
+       }
+}
+
 int OpenVDBManager::add_volume(const string &filename, const string &name, int 
sampling, int grid_type)
 {
        using namespace openvdb;
@@ -216,4 +218,41 @@ void OpenVDBManager::device_free(Device *device, 
DeviceScene *dscene)
        (void)dscene;
 }
 
+#else
+
+OpenVDBManager::OpenVDBManager()
+{
+       need_update = false;
+}
+
+OpenVDBManager::~OpenVDBManager()
+{
+}
+
+int OpenVDBManager::add_volume(const string &filename, const string &name, int 
sampling, int grid_type)
+{
+       (void)filename;
+       (void)name;
+       (void)sampling;
+       (void)grid_type;
+
+       return -1;
+}
+
+void OpenVDBManager::device_update(Device *device, DeviceScene *dscene, Scene 
*scene, Progress &progress)
+{
+       (void)device;
+       (void)dscene;
+       (void)scene;
+       (void)progress;
+}
+
+void OpenVDBManager::device_free(Device *device, DeviceScene *dscene)
+{
+       (void)device;
+       (void)dscene;
+}
+
+#endif
+
 CCL_NAMESPACE_END
diff --git a/intern/cycles/render/openvdb.h b/intern/cycles/render/openvdb.h
index 8c25058..b783fd7 100644
--- a/intern/cycles/render/openvdb.h
+++ b/intern/cycles/render/openvdb.h
@@ -47,6 +47,7 @@ public:
 
        bool need_update;
 
+#ifdef WITH_OPENVDB
        vector<GridDescription> current_grids;
        vector<openvdb::FloatGrid::Ptr> scalar_grids;
        vector<openvdb::Vec3SGrid::Ptr> vector_grids;
@@ -55,6 +56,7 @@ public:
        vector<vdb_fsampler_b*> float_samplers_b;
        vector<vdb_vsampler_p*> vec3s_samplers_p;
        vector<vdb_vsampler_b*> vec3s_samplers_b;
+#endif
 };
 
 CCL_NAMESPACE_END
diff --git a/intern/cycles/util/CMakeLists.txt 
b/intern/cycles/util/CMakeLists.txt
index cec6371..d3047ec 100644
--- a/intern/cycles/util/CMakeLists.txt
+++ b/intern/cycles/util/CMakeLists.txt
@@ -85,6 +85,12 @@ if(WITH_CYCLES_DEBUG)
        )
 endif()
 
+if(WITH_OPENVDB)
+    add_definitions(
+        -DWITH_OPENVDB
+    )
+endif()
+
 include_directories(${INC})
 include_directories(SYSTEM ${INC_SYS})
 
diff --git a/intern/cycles/util/util_openvdb.h 
b/intern/cycles/util/util_openvdb.h
index 01fb45a..a4742d3 100644
--- a/intern/cycles/util/util_openvdb.h
+++ b/intern/cycles/util/util_openvdb.h
@@ -1,6 +1,7 @@
 #ifndef __UTIL_OPENVDB_H__
 #define __UTIL_OPENVDB_H__
 
+#ifdef WITH_OPENVDB
 #include <openvdb/openvdb.h>
 #include <openvdb/tools/Interpolation.h>
 
@@ -30,5 +31,7 @@ typedef openvdb::tools::GridSampler<openvdb::Vec3SGrid, 
openvdb::tools::BoxSampl
 
 CCL_NAMESPACE

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to