Merge remote-tracking branch 'origin/master' into blender2.8
This commit is contained in:
@@ -429,7 +429,7 @@ icons_geom: .FORCE
|
|||||||
"$(BLENDER_DIR)/release/datafiles/blender_icons_geom_update.py"
|
"$(BLENDER_DIR)/release/datafiles/blender_icons_geom_update.py"
|
||||||
|
|
||||||
update: .FORCE
|
update: .FORCE
|
||||||
if [ "$(OS_NCASE)" == "darwin" ] && [ ! -d "../lib/$(OS_NCASE)" ]; then \
|
if [ "$(OS_NCASE)" = "darwin" ] && [ ! -d "../lib/$(OS_NCASE)" ]; then \
|
||||||
svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/lib/$(OS_NCASE) ../lib/$(OS_NCASE) ; \
|
svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/lib/$(OS_NCASE) ../lib/$(OS_NCASE) ; \
|
||||||
fi
|
fi
|
||||||
if [ -d "../lib" ]; then \
|
if [ -d "../lib" ]; then \
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ project(OpenVDB)
|
|||||||
|
|
||||||
# --------------------------------------------------------------------------------
|
# --------------------------------------------------------------------------------
|
||||||
|
|
||||||
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules")
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
|
||||||
|
|
||||||
# --------------------------------------------------------------------------------
|
# --------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -88,6 +88,14 @@ elseif(WIN32)
|
|||||||
set(DISABLE_RTTI "/EHs- /GR- ")
|
set(DISABLE_RTTI "/EHs- /GR- ")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
|
include(CheckCXXCompilerFlag)
|
||||||
|
check_cxx_compiler_flag("-flifetime-dse=1" SUPPORTS_FLIFETIME)
|
||||||
|
if (SUPPORTS_FLIFETIME)
|
||||||
|
add_definitions(-flifetime-dse=1)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# Linker export definitions
|
# Linker export definitions
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
add_custom_command(OUTPUT tbb.def
|
add_custom_command(OUTPUT tbb.def
|
||||||
|
|||||||
72
build_files/cmake/Modules/FindBlosc.cmake
Normal file
72
build_files/cmake/Modules/FindBlosc.cmake
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
# - Find Blosc library
|
||||||
|
# Find the native Blosc includes and library
|
||||||
|
# This module defines
|
||||||
|
# BLOSC_INCLUDE_DIRS, where to find blosc.h, Set when
|
||||||
|
# Blosc is found.
|
||||||
|
# BLOSC_LIBRARIES, libraries to link against to use Blosc.
|
||||||
|
# BLOSC_ROOT_DIR, The base directory to search for Blosc.
|
||||||
|
# This can also be an environment variable.
|
||||||
|
# BLOSC_FOUND, If false, do not try to use Blosc.
|
||||||
|
#
|
||||||
|
# also defined, but not for general use are
|
||||||
|
# BLOSC_LIBRARY, where to find the Blosc library.
|
||||||
|
|
||||||
|
#=============================================================================
|
||||||
|
# Copyright 2018 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 BLOSC_ROOT_DIR was defined in the environment, use it.
|
||||||
|
IF(NOT BLOSC_ROOT_DIR AND NOT $ENV{BLOSC_ROOT_DIR} STREQUAL "")
|
||||||
|
SET(BLOSC_ROOT_DIR $ENV{BLOSC_ROOT_DIR})
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
SET(_blosc_SEARCH_DIRS
|
||||||
|
${BLOSC_ROOT_DIR}
|
||||||
|
/usr/local
|
||||||
|
/sw # Fink
|
||||||
|
/opt/local # DarwinPorts
|
||||||
|
/opt/lib/blosc
|
||||||
|
)
|
||||||
|
|
||||||
|
FIND_PATH(BLOSC_INCLUDE_DIR
|
||||||
|
NAMES
|
||||||
|
blosc.h
|
||||||
|
HINTS
|
||||||
|
${_blosc_SEARCH_DIRS}
|
||||||
|
PATH_SUFFIXES
|
||||||
|
include
|
||||||
|
)
|
||||||
|
|
||||||
|
FIND_LIBRARY(BLOSC_LIBRARY
|
||||||
|
NAMES
|
||||||
|
blosc
|
||||||
|
HINTS
|
||||||
|
${_blosc_SEARCH_DIRS}
|
||||||
|
PATH_SUFFIXES
|
||||||
|
lib64 lib
|
||||||
|
)
|
||||||
|
|
||||||
|
# handle the QUIETLY and REQUIRED arguments and set BLOSC_FOUND to TRUE if
|
||||||
|
# all listed variables are TRUE
|
||||||
|
INCLUDE(FindPackageHandleStandardArgs)
|
||||||
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(BLOSC DEFAULT_MSG
|
||||||
|
BLOSC_LIBRARY BLOSC_INCLUDE_DIR)
|
||||||
|
|
||||||
|
IF(BLOSC_FOUND)
|
||||||
|
SET(BLOSC_LIBRARIES ${BLOSC_LIBRARY})
|
||||||
|
SET(BLOSC_INCLUDE_DIRS ${BLOSC_INCLUDE_DIR})
|
||||||
|
ELSE()
|
||||||
|
SET(BLOSC_BLOSC_FOUND FALSE)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
MARK_AS_ADVANCED(
|
||||||
|
BLOSC_INCLUDE_DIR
|
||||||
|
BLOSC_LIBRARY
|
||||||
|
)
|
||||||
@@ -425,7 +425,7 @@ function(setup_liblinks
|
|||||||
target_link_libraries(${target} ${OPENSUBDIV_LIBRARIES})
|
target_link_libraries(${target} ${OPENSUBDIV_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
if(WITH_OPENVDB)
|
if(WITH_OPENVDB)
|
||||||
target_link_libraries(${target} ${OPENVDB_LIBRARIES} ${TBB_LIBRARIES})
|
target_link_libraries(${target} ${OPENVDB_LIBRARIES} ${TBB_LIBRARIES} ${BLOSC_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
if(WITH_CYCLES_OSL)
|
if(WITH_CYCLES_OSL)
|
||||||
target_link_libraries(${target} ${OSL_LIBRARIES})
|
target_link_libraries(${target} ${OSL_LIBRARIES})
|
||||||
|
|||||||
@@ -237,10 +237,14 @@ endif()
|
|||||||
if(WITH_OPENVDB)
|
if(WITH_OPENVDB)
|
||||||
find_package_wrapper(OpenVDB)
|
find_package_wrapper(OpenVDB)
|
||||||
find_package_wrapper(TBB)
|
find_package_wrapper(TBB)
|
||||||
|
find_package_wrapper(Blosc)
|
||||||
if(NOT OPENVDB_FOUND OR NOT TBB_FOUND)
|
if(NOT OPENVDB_FOUND OR NOT TBB_FOUND)
|
||||||
set(WITH_OPENVDB OFF)
|
set(WITH_OPENVDB OFF)
|
||||||
set(WITH_OPENVDB_BLOSC OFF)
|
set(WITH_OPENVDB_BLOSC OFF)
|
||||||
message(STATUS "OpenVDB not found, disabling it")
|
message(STATUS "OpenVDB not found, disabling it")
|
||||||
|
elseif(NOT BLOSC_FOUND)
|
||||||
|
set(WITH_OPENVDB_BLOSC OFF)
|
||||||
|
message(STATUS "Blosc not found, disabling it")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@@ -2015,29 +2015,31 @@ int BLI_bvhtree_range_query(
|
|||||||
/** \name BLI_bvhtree_walk_dfs
|
/** \name BLI_bvhtree_walk_dfs
|
||||||
* \{ */
|
* \{ */
|
||||||
|
|
||||||
|
typedef struct BVHTree_WalkData {
|
||||||
|
BVHTree_WalkParentCallback walk_parent_cb;
|
||||||
|
BVHTree_WalkLeafCallback walk_leaf_cb;
|
||||||
|
BVHTree_WalkOrderCallback walk_order_cb;
|
||||||
|
void *userdata;
|
||||||
|
} BVHTree_WalkData;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs first among nodes children of the first node before going to the next node in the same layer.
|
* Runs first among nodes children of the first node before going to the next node in the same layer.
|
||||||
*
|
*
|
||||||
* \return false to break out of the search early.
|
* \return false to break out of the search early.
|
||||||
*/
|
*/
|
||||||
static bool bvhtree_walk_dfs_recursive(
|
static bool bvhtree_walk_dfs_recursive(
|
||||||
BVHTree_WalkParentCallback walk_parent_cb,
|
BVHTree_WalkData *walk_data,
|
||||||
BVHTree_WalkLeafCallback walk_leaf_cb,
|
const BVHNode *node)
|
||||||
BVHTree_WalkOrderCallback walk_order_cb,
|
|
||||||
const BVHNode *node, void *userdata)
|
|
||||||
{
|
{
|
||||||
if (node->totnode == 0) {
|
if (node->totnode == 0) {
|
||||||
return walk_leaf_cb((const BVHTreeAxisRange *)node->bv, node->index, userdata);
|
return walk_data->walk_leaf_cb((const BVHTreeAxisRange *)node->bv, node->index, walk_data->userdata);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* First pick the closest node to recurse into */
|
/* First pick the closest node to recurse into */
|
||||||
if (walk_order_cb((const BVHTreeAxisRange *)node->bv, node->main_axis, userdata)) {
|
if (walk_data->walk_order_cb((const BVHTreeAxisRange *)node->bv, node->main_axis, walk_data->userdata)) {
|
||||||
for (int i = 0; i != node->totnode; i++) {
|
for (int i = 0; i != node->totnode; i++) {
|
||||||
if (walk_parent_cb((const BVHTreeAxisRange *)node->children[i]->bv, userdata)) {
|
if (walk_data->walk_parent_cb((const BVHTreeAxisRange *)node->children[i]->bv, walk_data->userdata)) {
|
||||||
if (!bvhtree_walk_dfs_recursive(
|
if (!bvhtree_walk_dfs_recursive(walk_data, node->children[i])) {
|
||||||
walk_parent_cb, walk_leaf_cb, walk_order_cb,
|
|
||||||
node->children[i], userdata))
|
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2045,11 +2047,8 @@ static bool bvhtree_walk_dfs_recursive(
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (int i = node->totnode - 1; i >= 0; i--) {
|
for (int i = node->totnode - 1; i >= 0; i--) {
|
||||||
if (walk_parent_cb((const BVHTreeAxisRange *)node->children[i]->bv, userdata)) {
|
if (walk_data->walk_parent_cb((const BVHTreeAxisRange *)node->children[i]->bv, walk_data->userdata)) {
|
||||||
if (!bvhtree_walk_dfs_recursive(
|
if (!bvhtree_walk_dfs_recursive(walk_data, node->children[i])) {
|
||||||
walk_parent_cb, walk_leaf_cb, walk_order_cb,
|
|
||||||
node->children[i], userdata))
|
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2079,9 +2078,10 @@ void BLI_bvhtree_walk_dfs(
|
|||||||
{
|
{
|
||||||
const BVHNode *root = tree->nodes[tree->totleaf];
|
const BVHNode *root = tree->nodes[tree->totleaf];
|
||||||
if (root != NULL) {
|
if (root != NULL) {
|
||||||
|
BVHTree_WalkData walk_data = {walk_parent_cb, walk_leaf_cb, walk_order_cb, userdata};
|
||||||
/* first make sure the bv of root passes in the test too */
|
/* first make sure the bv of root passes in the test too */
|
||||||
if (walk_parent_cb((const BVHTreeAxisRange *)root->bv, userdata)) {
|
if (walk_parent_cb((const BVHTreeAxisRange *)root->bv, userdata)) {
|
||||||
bvhtree_walk_dfs_recursive(walk_parent_cb, walk_leaf_cb, walk_order_cb, root, userdata);
|
bvhtree_walk_dfs_recursive(&walk_data, root);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user