Commit: bd96249455f6f01aa447951ba7eeb3542b4c7761
Author: Kévin Dietrich
Date:   Sun May 10 15:53:34 2015 +0200
Branches: openvdb
https://developer.blender.org/rBbd96249455f6f01aa447951ba7eeb3542b4c7761

Apply patch in a new branch, to clean the history a bit

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

M       CMakeLists.txt
A       build_files/cmake/Modules/FindOpenVDB.cmake
M       build_files/cmake/macros.cmake
M       intern/cycles/CMakeLists.txt
M       intern/cycles/app/cycles_xml.cpp
M       intern/cycles/blender/blender_shader.cpp
M       intern/cycles/kernel/CMakeLists.txt
M       intern/cycles/kernel/kernel.cpp
M       intern/cycles/kernel/kernel_compat_cpu.h
M       intern/cycles/kernel/kernel_globals.h
M       intern/cycles/kernel/svm/svm.h
A       intern/cycles/kernel/svm/svm_openvdb.h
M       intern/cycles/kernel/svm/svm_types.h
M       intern/cycles/render/CMakeLists.txt
M       intern/cycles/render/nodes.cpp
M       intern/cycles/render/nodes.h
A       intern/cycles/render/openvdb.cpp
A       intern/cycles/render/openvdb.h
M       intern/cycles/render/scene.cpp
M       intern/cycles/render/scene.h
M       intern/cycles/render/svm.cpp
M       intern/cycles/render/svm.h
M       intern/cycles/util/CMakeLists.txt
A       intern/cycles/util/util_openvdb.h
M       intern/smoke/CMakeLists.txt
M       intern/smoke/extern/smoke_API.h
M       intern/smoke/intern/FLUID_3D.h
A       intern/smoke/intern/openvdb_convert.cpp
M       intern/smoke/intern/smoke_API.cpp
M       release/datafiles/locale
M       release/scripts/addons
M       release/scripts/addons_contrib
M       release/scripts/startup/bl_ui/properties_physics_smoke.py
M       release/scripts/startup/nodeitems_builtins.py
M       source/blender/blenkernel/BKE_node.h
M       source/blender/blenkernel/BKE_smoke.h
M       source/blender/blenkernel/intern/node.c
M       source/blender/blenkernel/intern/smoke.c
M       source/blender/editors/object/CMakeLists.txt
M       source/blender/editors/object/object_intern.h
M       source/blender/editors/object/object_modifier.c
M       source/blender/editors/object/object_ops.c
M       source/blender/editors/space_node/drawnode.c
M       source/blender/makesdna/DNA_node_types.h
M       source/blender/makesdna/DNA_smoke_types.h
M       source/blender/makesrna/intern/rna_nodetree.c
M       source/blender/makesrna/intern/rna_smoke.c
M       source/blender/nodes/CMakeLists.txt
M       source/blender/nodes/NOD_shader.h
M       source/blender/nodes/NOD_static_types.h
A       source/blender/nodes/shader/nodes/node_shader_openvdb.c
M       source/blender/windowmanager/WM_api.h

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

diff --git a/CMakeLists.txt b/CMakeLists.txt
index ae2c67b..b7c41bd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -222,6 +222,7 @@ option(WITH_GAMEENGINE    "Enable Game Engine" 
${_init_GAMEENGINE})
 option(WITH_PLAYER        "Build Player" OFF)
 option(WITH_OPENCOLORIO   "Enable OpenColorIO color management" 
${_init_OPENCOLORIO})
 option(WITH_COMPOSITOR    "Enable the tile based nodal compositor" ON)
+option(WITH_OPENVDB       "Enable features relying on OpenVDB" ON)
 
 # GHOST Windowing Library Options
 option(WITH_GHOST_DEBUG   "Enable debugging output for the GHOST library" OFF)
@@ -1059,6 +1060,23 @@ if(UNIX AND NOT APPLE)
                endif()
        endif()
 
+       if(WITH_OPENVDB)
+               find_package_wrapper(OpenVDB)
+
+               set(TBB ${LIBDIR}/tbb)
+               set(TBB_LIBRARIES tbb)
+               set(TBB_LIBPATH ${TBB}/lib)
+
+               set(OPENVDB_LIBRARIES ${OPENVDB_LIBRARIES} ${BOOST_LIBRARIES} 
${ZLIB_LIBRARIES} ${TBB_LIBRARIES})
+               set(OPENVDB_LIBPATH)  # TODO, remove and reference the absolute 
path everywhere
+               set(OPENVDB_DEFINITIONS)
+
+               if(NOT OPENVDB_FOUND)
+                       set(WITH_OPENVDB OFF)
+                       message(STATUS "OpenVDB not found")
+               endif()
+       endif()
+
        if(WITH_LLVM)
         find_package_wrapper(LLVM)
 
@@ -1480,7 +1498,14 @@ elseif(WIN32)
                        set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
                        set(OPENCOLORIO_DEFINITIONS)
                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_MOD_CLOTH_ELTOPO)
                        set(LAPACK ${LIBDIR}/lapack)
diff --git a/build_files/cmake/Modules/FindOpenVDB.cmake 
b/build_files/cmake/Modules/FindOpenVDB.cmake
new file mode 100644
index 0000000..116f642
--- /dev/null
+++ b/build_files/cmake/Modules/FindOpenVDB.cmake
@@ -0,0 +1,74 @@
+# - Find OPENVDB library
+# Find the native OPENVDB includes and library
+# This module defines
+#  OPENVDB_INCLUDE_DIRS, where to find openvdb.h, Set when
+#                            OPENVDB_INCLUDE_DIR is found.
+#  OPENVDB_LIBRARIES, libraries to link against to use OPENVDB.
+#  OPENVDB_ROOT_DIR, The base directory to search for OPENVDB.
+#                        This can also be an environment variable.
+#  OPENVDB_FOUND, If false, do not try to use OPENVDB.
+#
+# also defined, but not for general use are
+#  OPENVDB_LIBRARY, where to find the OPENVDB library.
+
+#=============================================================================
+# Copyright 2015 Blender Foundation.
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+
+# If OPENVDB_ROOT_DIR was defined in the environment, use it.
+IF(NOT OPENVDB_ROOT_DIR AND NOT $ENV{OPENVDB_ROOT_DIR} STREQUAL "")
+       SET(OPENVDB_ROOT_DIR $ENV{OPENVDB_ROOT_DIR})
+ENDIF()
+
+SET(_openvdb_SEARCH_DIRS
+       ${OPENVDB_ROOT_DIR}
+       /usr/local
+       /sw # Fink
+       /opt/local # DarwinPorts
+       /opt/csw # Blastwave
+       /opt/lib/openvdb
+)
+
+FIND_PATH(OPENVDB_INCLUDE_DIR
+       NAMES
+               openvdb/openvdb.h
+       HINTS
+               ${_openvdb_SEARCH_DIRS}
+       PATH_SUFFIXES
+               include
+)
+
+FIND_LIBRARY(OPENVDB_LIBRARY
+       NAMES
+               openvdb
+       HINTS
+               ${_openvdb_SEARCH_DIRS}
+       PATH_SUFFIXES
+               lib64 lib
+)
+
+# handle the QUIETLY and REQUIRED arguments and set OPENVDB_FOUND to TRUE if
+# all listed variables are TRUE
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(OPENVDB DEFAULT_MSG
+                                  OPENVDB_LIBRARY
+                                  OPENVDB_INCLUDE_DIR)
+
+IF(OPENVDB_FOUND)
+       SET(OPENVDB_LIBRARIES ${OPENVDB_LIBRARY})
+       SET(OPENVDB_INCLUDE_DIRS ${OPENVDB_INCLUDE_DIR})
+ENDIF(OPENVDB_FOUND)
+
+MARK_AS_ADVANCED(
+       OPENVDB_INCLUDE_DIR
+       OPENVDB_LIBRARY
+)
+
+UNSET(_openvdb_SEARCH_DIRS)
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake
index 8b2f3f1..bd353c2 100644
--- a/build_files/cmake/macros.cmake
+++ b/build_files/cmake/macros.cmake
@@ -255,6 +255,9 @@ macro(SETUP_LIBDIRS)
        if(WITH_OPENCOLORIO)
                link_directories(${OPENCOLORIO_LIBPATH})
        endif()
+       if(WITH_OPENVDB)
+               link_directories(${OPENVDB_LIBPATH})
+       endif()
        if(WITH_IMAGE_OPENJPEG AND WITH_SYSTEM_OPENJPEG)
                link_directories(${OPENJPEG_LIBPATH})
        endif()
@@ -357,6 +360,9 @@ macro(setup_liblinks
        if(WITH_OPENCOLORIO)
                target_link_libraries(${target} ${OPENCOLORIO_LIBRARIES})
        endif()
+       if(WITH_OPENVDB)
+               target_link_libraries(${target} ${OPENVDB_LIBRARIES})
+       endif()
        if(WITH_CYCLES_OSL)
                target_link_libraries(${target} ${OSL_LIBRARIES})
        endif()
diff --git a/intern/cycles/CMakeLists.txt b/intern/cycles/CMakeLists.txt
index c4cadfe..fd21080 100644
--- a/intern/cycles/CMakeLists.txt
+++ b/intern/cycles/CMakeLists.txt
@@ -197,6 +197,7 @@ include_directories(
        ${OPENIMAGEIO_INCLUDE_DIRS}/OpenImageIO
        ${OPENEXR_INCLUDE_DIR}
        ${OPENEXR_INCLUDE_DIRS}
+       ${OPENVDB_INCLUDE_DIRS}
        ${PUGIXML_INCLUDE_DIR}
 )
 
diff --git a/intern/cycles/app/cycles_xml.cpp b/intern/cycles/app/cycles_xml.cpp
index 1cfc814..b58061b 100644
--- a/intern/cycles/app/cycles_xml.cpp
+++ b/intern/cycles/app/cycles_xml.cpp
@@ -712,6 +712,13 @@ static void xml_read_shader_graph(const XMLReadState& 
state, Shader *shader, pug
                        xml_read_enum(&vtransform->convert_to, 
VectorTransformNode::convert_space_enum, node, "convert_to");
                        snode = vtransform;
                }
+               else if(string_iequals(node.name(), "openvdb")) {
+                       OpenVDBNode *vdbnode = new OpenVDBNode();
+                       xml_read_string(&vdbnode->filename, node, "src");
+                       vdbnode->filename = path_join(state.base, 
vdbnode->filename);
+
+                       snode = vdbnode;
+               }
                else if(string_iequals(node.name(), "connect")) {
                        /* connect nodes */
                        vector<string> from_tokens, to_tokens;
diff --git a/intern/cycles/blender/blender_shader.cpp 
b/intern/cycles/blender/blender_shader.cpp
index d3b01fb..8cfcd38 100644
--- a/intern/cycles/blender/blender_shader.cpp
+++ b/intern/cycles/blender/blender_shader.cpp
@@ -736,6 +736,13 @@ static ShaderNode *add_node(Scene *scene,
                uvm->from_dupli = b_uvmap_node.from_dupli();
                node = uvm;
        }
+       else if(b_node.is_a(&RNA_ShaderNodeOpenVDB)) {
+               BL::ShaderNodeOpenVDB b_vdb_node(b_node);
+               OpenVDBNode *vdb_node = new OpenVDBNode();
+               vdb_node->filename = b_vdb_node.filename();
+               vdb_node->sampling = b_vdb_node.sampling();
+               node = vdb_node;
+       }
 
        if(node)
                graph->add(node);
diff --git a/intern/cycles/kernel/CMakeLists.txt 
b/intern/cycles/kernel/CMakeLists.txt
index 85b2760..71264ed 100644
--- a/intern/cycles/kernel/CMakeLists.txt
+++ b/intern/cycles/kernel/CMakeLists.txt
@@ -115,6 +115,7 @@ set(SRC_SVM_HEADERS
        svm/svm_noise.h
        svm/svm_noisetex.h
        svm/svm_normal.h
+       svm/svm_openvdb.h
        svm/svm_ramp.h
        svm/svm_sepcomb_hsv.h
        svm/svm_sepcomb_vector.h
diff --git a/intern/cycles/kernel/kernel.cpp b/intern/cycles/kernel/kernel.cpp
index a7eaa75..7817c67 100644
--- a/intern/cycles/kernel/kernel.cpp
+++ b/intern/cycles/kernel/kernel.cpp
@@ -33,6 +33,14 @@ void kernel_const_copy(KernelGlobals *kg, const char *name, 
void *host, size_t s
 {
        if(strcmp(name, "__data") == 0)
                memcpy(&kg->__data, host, size);
+       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)
+               
kg->vdb_float_samplers_b.insert(kg->vdb_float_samplers_b.begin() + size, 
(vdb_fsampler_b *)host);
+       else if(strcmp(name, "__vdb_vec3s_samplers_p") == 0)
+               
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);
        else
                assert(0);
 }
diff --git a/intern/cycles/kernel/kernel_compat_cpu.h 
b/intern/cycles/kernel/kernel_compat_cpu.h
index 7a5f70f..6da0021 100644
--- a/intern/cycles/kernel/kernel_compat_cpu.h
+++ b/intern/cycles/kernel/kernel_compat_cpu.h
@@ -39,6 +39,8 @@
 #include "util_simd.h"
 #include "util_half.h"
 #include "util_types.h"
+#include "util_openvdb.h"
+#include "util_vector.h"
 
 #define ccl_addr_space
 
diff --git a/intern/cycles/kernel/kernel_globals.h 
b/intern/cycles/kernel/kernel_globals.h
index 17fa189..f168440 100644
--- a/intern/cycles/kernel/kernel_globals.h
+++ b/intern/cycles/kernel/kernel_globals.h
@@ -38,6 +38,12 @@ typedef struct KernelGlobals {
        texture_image_uchar4 texture_byte_images[MAX_BYTE_IMAGES];
        texture_image_float4 texture_float_images[MAX_FLOAT_IMAGES];
 
+       /* 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;
+
 #define KERNEL_TEX(type, ttype, name) ttype name;
 #define KERNEL_IMAGE_TEX(type, ttype, name)
 #include "kernel_textures.h"
diff --git a/intern/cycles/kernel/svm/svm.h b/intern/cycles/kernel/svm/svm.h
index e5e25eb..9ec4c55 100644
--- a/intern/cycles/kernel/svm/svm.h
+++ b/intern/cycles/kernel/svm/svm.h
@@ -168,6 +168,7 @@ CCL_NAMESPACE_END
 #include "svm_wave.h"
 #include "svm_math.h"
 #include "svm_mix.h"
+#include "svm_openvdb.h"
 #include "svm_ramp.h"
 #include "svm_sepcomb_hsv.h"
 #include "svm_sepcomb_vector.h"
@@ -434,7 +435,10 @@ ccl_device_noinline void svm_eval_nodes(KernelGlobals *kg, 
ShaderData *sd, Shade
                                break;
                        case NODE_NORMAL_MAP:
                                svm_node_normal_map(kg, sd, stack, node);
-                               break;  
+                               break;
+                       case NODE_OPENVDB:
+                               svm_node_openvdb(kg, sd, stack, node);
+                               break;
                        case NODE_END:
                        default:
                                return;
diff --git a/intern/cycles/kernel/svm/svm_openvdb.h 
b/intern/cycles/kernel/svm/svm_openvdb.h
new file mode 100644
index 0000000..74fdae0
--- /dev/null
+++ b/intern/cycles/kernel/svm/svm_openvdb.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2015 Blender Foundation
+ *
+ * Licensed unde

@@ 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