Mesh: Replace auto smooth with node group #108014

Merged
Hans Goudey merged 149 commits from HooglyBoogly/blender:refactor-mesh-corner-normals-lazy into main 2023-10-20 16:54:20 +02:00
1994 changed files with 36565 additions and 230987 deletions
Showing only changes of commit 594852f321 - Show all commits

View File

@ -693,7 +693,7 @@ if(UNIX)
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
option(WITH_LINKER_LLD "Use ld.lld linker which is usually faster than ld.gold" OFF)
mark_as_advanced(WITH_LINKER_LLD)
option(WITH_LINKER_MOLD "Use ld.mold linker which is usually faster than ld.gold & ld.lld. Needs \"sold\" subscription on macOS." OFF)
option(WITH_LINKER_MOLD "Use ld.mold linker which is usually faster than ld.gold & ld.lld" OFF)
mark_as_advanced(WITH_LINKER_MOLD)
endif()
endif()
@ -1755,6 +1755,8 @@ endif()
if(WITH_COMPILER_SHORT_FILE_MACRO)
# Use '-fmacro-prefix-map' for Clang and GCC (MSVC doesn't support this).
set(C_PREFIX_MAP_FLAGS "")
set(CXX_PREFIX_MAP_FLAGS "")
add_check_c_compiler_flag(C_PREFIX_MAP_FLAGS C_MACRO_PREFIX_MAP -fmacro-prefix-map=foo=bar)
add_check_cxx_compiler_flag(CXX_PREFIX_MAP_FLAGS CXX_MACRO_PREFIX_MAP -fmacro-prefix-map=foo=bar)
if(C_MACRO_PREFIX_MAP AND CXX_MACRO_PREFIX_MAP)
@ -1789,6 +1791,8 @@ if(WITH_COMPILER_SHORT_FILE_MACRO)
)
set(WITH_COMPILER_SHORT_FILE_MACRO OFF)
endif()
unset(C_PREFIX_MAP_FLAGS)
unset(CXX_PREFIX_MAP_FLAGS)
endif()
# Include warnings first, so its possible to disable them with user defined flags

View File

@ -16,7 +16,7 @@ set(ZLIB_HASH 9b8aa094c4e5765dabf4da391f00d15c)
set(ZLIB_HASH_TYPE MD5)
set(ZLIB_FILE zlib-${ZLIB_VERSION}.tar.gz)
set(ZLIB_CPE "cpe:2.3:a:zlib:zlib:${ZLIB_VERSION}:*:*:*:*:*:*:*")
#set(ZLIB_HOMEPAGE https://zlib.net)
set(ZLIB_HOMEPAGE https://zlib.net)
set(OPENAL_VERSION 1.21.1)
set(OPENAL_URI http://openal-soft.org/openal-releases/openal-soft-${OPENAL_VERSION}.tar.bz2)

View File

@ -269,6 +269,20 @@ DEPS_CRITICAL_SUBPACKAGES = (
DISTRO_ID_ARCH: "dbus",
},
),
Package(name="OpenGL Library",
distro_package_names={DISTRO_ID_DEBIAN: "libgl-dev",
DISTRO_ID_FEDORA: "mesa-libGL-devel",
DISTRO_ID_SUSE: "Mesa-libGL-devel",
DISTRO_ID_ARCH: "libglvnd",
},
),
Package(name="EGL Library",
distro_package_names={DISTRO_ID_DEBIAN: "libegl-dev",
DISTRO_ID_FEDORA: "mesa-libEGL-devel",
DISTRO_ID_SUSE: "Mesa-libEGL-devel",
DISTRO_ID_ARCH: None, # Included in `libglvnd`.
},
),
)

View File

@ -13,9 +13,13 @@
# ALEMBIC_FOUND, If false, do not try to use Alembic.
#
# If ALEMBIC_ROOT_DIR was defined in the environment, use it.
IF(NOT ALEMBIC_ROOT_DIR AND NOT $ENV{ALEMBIC_ROOT_DIR} STREQUAL "")
# If `ALEMBIC_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED ALEMBIC_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{ALEMBIC_ROOT_DIR})
SET(ALEMBIC_ROOT_DIR $ENV{ALEMBIC_ROOT_DIR})
ELSE()
SET(ALEMBIC_ROOT_DIR "")
ENDIF()
SET(_alembic_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# BLOSC_LIBRARY, where to find the Blosc library.
# If BLOSC_ROOT_DIR was defined in the environment, use it.
IF(NOT BLOSC_ROOT_DIR AND NOT $ENV{BLOSC_ROOT_DIR} STREQUAL "")
# If `BLOSC_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED BLOSC_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{BLOSC_ROOT_DIR})
SET(BLOSC_ROOT_DIR $ENV{BLOSC_ROOT_DIR})
ELSE()
SET(BLOSC_ROOT_DIR "")
ENDIF()
SET(_blosc_SEARCH_DIRS

View File

@ -12,9 +12,13 @@
# BROTLI_FOUND, If false, do not try to use Brotli.
#
# If BROTLI_ROOT_DIR was defined in the environment, use it.
IF(NOT BROTLI_ROOT_DIR AND NOT $ENV{BROTLI_ROOT_DIR} STREQUAL "")
# If `BROTLI_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED BROTLI_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{BROTLI_ROOT_DIR})
SET(BROTLI_ROOT_DIR $ENV{BROTLI_ROOT_DIR})
ELSE()
SET(BROTLI_ROOT_DIR "")
ENDIF()
SET(_BROTLI_SEARCH_DIRS

View File

@ -12,9 +12,13 @@
# This can also be an environment variable.
# CLANG_FOUND, If false, do not try to use Clang.
# If CLANG_ROOT_DIR was defined in the environment, use it.
if(NOT CLANG_ROOT_DIR AND NOT $ENV{CLANG_ROOT_DIR} STREQUAL "")
# If `CLANG_ROOT_DIR` was defined in the environment, use it.
if(DEFINED CLANG_ROOT_DIR)
# Pass.
elseif(DEFINED ENV{CLANG_ROOT_DIR})
set(CLANG_ROOT_DIR $ENV{CLANG_ROOT_DIR})
else()
set(CLANG_ROOT_DIR "")
endif()
if(NOT LLVM_ROOT_DIR)

View File

@ -18,9 +18,13 @@
#
# CLANG_TIDY_FOUND, If false, do not try to use Eigen3.
# If CLANG_TIDY_ROOT_DIR was defined in the environment, use it.
if(NOT CLANG_TIDY_ROOT_DIR AND NOT $ENV{CLANG_TIDY_ROOT_DIR} STREQUAL "")
# If `CLANG_TIDY_ROOT_DIR` was defined in the environment, use it.
if(DEFINED CLANG_TIDY_ROOT_DIR)
# Pass.
elseif(DEFINED ENV{CLANG_TIDY_ROOT_DIR})
set(CLANG_TIDY_ROOT_DIR $ENV{CLANG_TIDY_ROOT_DIR})
else()
set(CLANG_TIDY_ROOT_DIR "")
endif()
set(_clang_tidy_SEARCH_DIRS

View File

@ -11,9 +11,13 @@
# This can also be an environment variable.
# EIGEN3_FOUND, If false, do not try to use Eigen3.
# If EIGEN3_ROOT_DIR was defined in the environment, use it.
IF(NOT EIGEN3_ROOT_DIR AND NOT $ENV{EIGEN3_ROOT_DIR} STREQUAL "")
# If `EIGEN3_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED EIGEN3_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{EIGEN3_ROOT_DIR})
SET(EIGEN3_ROOT_DIR $ENV{EIGEN3_ROOT_DIR})
ELSE()
SET(EIGEN3_ROOT_DIR "")
ENDIF()
SET(_eigen3_SEARCH_DIRS

View File

@ -12,9 +12,13 @@
# This can also be an environment variable.
# EMBREEFOUND, If false, do not try to use Embree.
# If EMBREE_ROOT_DIR was defined in the environment, use it.
IF(NOT EMBREE_ROOT_DIR AND NOT $ENV{EMBREE_ROOT_DIR} STREQUAL "")
# If `EMBREE_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED EMBREE_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{EMBREE_ROOT_DIR})
SET(EMBREE_ROOT_DIR $ENV{EMBREE_ROOT_DIR})
ELSE()
SET(EMBREE_ROOT_DIR "")
ENDIF()
SET(_embree_SEARCH_DIRS

View File

@ -9,8 +9,13 @@
# This can also be an environment variable.
# Epoxy_FOUND, If false, do not try to use epoxy.
IF(NOT EPOXY_ROOT_DIR AND NOT $ENV{EPOXY_ROOT_DIR} STREQUAL "")
# If `EPOXY_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED EPOXY_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{EPOXY_ROOT_DIR})
SET(EPOXY_ROOT_DIR $ENV{EPOXY_ROOT_DIR})
ELSE()
SET(EPOXY_ROOT_DIR "")
ENDIF()
FIND_PATH(Epoxy_INCLUDE_DIR

View File

@ -13,9 +13,13 @@
# FFMPEG_FOUND, If false, do not try to use FFmpeg.
# FFMPEG_<COMPONENT>_LIBRARY, the given individual component libraries.
# If FFMPEG_ROOT_DIR was defined in the environment, use it.
if(NOT FFMPEG_ROOT_DIR AND NOT $ENV{FFMPEG_ROOT_DIR} STREQUAL "")
# If `FFMPEG_ROOT_DIR` was defined in the environment, use it.
if(DEFINED FFMPEG_ROOT_DIR)
# Pass.
elseif(DEFINED ENV{FFMPEG_ROOT_DIR})
set(FFMPEG_ROOT_DIR $ENV{FFMPEG_ROOT_DIR})
else()
set(FFMPEG_ROOT_DIR "")
endif()
set(_ffmpeg_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# FFTW3_LIBRARY, where to find the Fftw3 library.
# If FFTW3_ROOT_DIR was defined in the environment, use it.
IF(NOT FFTW3_ROOT_DIR AND NOT $ENV{FFTW3_ROOT_DIR} STREQUAL "")
# If `FFTW3_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED FFTW3_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{FFTW3_ROOT_DIR})
SET(FFTW3_ROOT_DIR $ENV{FFTW3_ROOT_DIR})
ELSE()
SET(FFTW3_ROOT_DIR "")
ENDIF()
SET(_fftw3_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# GMP_LIBRARY, where to find the GMP library.
# If GMP_ROOT_DIR was defined in the environment, use it.
IF(NOT GMP_ROOT_DIR AND NOT $ENV{GMP_ROOT_DIR} STREQUAL "")
# If `GMP_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED GMP_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{GMP_ROOT_DIR})
SET(GMP_ROOT_DIR $ENV{GMP_ROOT_DIR})
ELSE()
SET(GMP_ROOT_DIR "")
ENDIF()
SET(_gmp_SEARCH_DIRS

View File

@ -60,9 +60,13 @@
# GFLAGS_LIBRARY: gflags library, not including the libraries of any
# dependencies.
# If GFLAGS_ROOT_DIR was defined in the environment, use it.
if(NOT GFLAGS_ROOT_DIR AND NOT $ENV{GFLAGS_ROOT_DIR} STREQUAL "")
# If `GFLAGS_ROOT_DIR` was defined in the environment, use it.
if(DEFINED GFLAGS_ROOT_DIR)
# Pass.
elseif(DEFINED ENV{GFLAGS_ROOT_DIR})
set(GFLAGS_ROOT_DIR $ENV{GFLAGS_ROOT_DIR})
else()
set(GFLAGS_ROOT_DIR "")
endif()
if(DEFINED GFLAGS_ROOT_DIR)

View File

@ -38,9 +38,13 @@
# GLOG_LIBRARY: glog library, not including the libraries of any
# dependencies.
# If GLOG_ROOT_DIR was defined in the environment, use it.
if(NOT GLOG_ROOT_DIR AND NOT $ENV{GLOG_ROOT_DIR} STREQUAL "")
# If `GLOG_ROOT_DIR` was defined in the environment, use it.
if(DEFINED GLOG_ROOT_DIR)
# Pass.
elseif(DEFINED ENV{GLOG_ROOT_DIR})
set(GLOG_ROOT_DIR $ENV{GLOG_ROOT_DIR})
else()
set(GLOG_ROOT_DIR "")
endif()
if(DEFINED GLOG_ROOT_DIR)

View File

@ -7,9 +7,13 @@
# HIP_VERSION, the HIP compiler version
# HIP_FOUND, if the HIP toolkit is found.
# If HIP_ROOT_DIR was defined in the environment, use it.
if(NOT HIP_ROOT_DIR AND NOT $ENV{HIP_ROOT_DIR} STREQUAL "")
# If `HIP_ROOT_DIR` was defined in the environment, use it.
if(DEFINED HIP_ROOT_DIR)
# Pass.
elseif(DEFINED ENV{HIP_ROOT_DIR})
set(HIP_ROOT_DIR $ENV{HIP_ROOT_DIR})
else()
set(HIP_ROOT_DIR "")
endif()
set(_hip_SEARCH_DIRS

View File

@ -7,9 +7,13 @@
# HIPRT_BITCODE, bitcode file with ray-tracing functionality
# HIPRT_FOUND, if SDK found
# If HIPRT_ROOT_DIR was defined in the environment, use it.
if(NOT HIPRT_ROOT_DIR AND NOT $ENV{HIPRT_ROOT_DIR} STREQUAL "")
# If `HIPRT_ROOT_DIR` was defined in the environment, use it.
if(DEFINED HIPRT_ROOT_DIR)
# Pass.
elseif(DEFINED ENV{HIPRT_ROOT_DIR})
set(HIPRT_ROOT_DIR $ENV{HIPRT_ROOT_DIR})
else()
set(HIPRT_ROOT_DIR "")
endif()
set(_hiprt_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# HARU_LIBRARY, where to find the Haru library.
# If HARU_ROOT_DIR was defined in the environment, use it.
if(NOT HARU_ROOT_DIR AND NOT $ENV{HARU_ROOT_DIR} STREQUAL "")
# If `HARU_ROOT_DIR` was defined in the environment, use it.
if(DEFINED HARU_ROOT_DIR)
# Pass.
elseif(DEFINED ENV{HARU_ROOT_DIR})
set(HARU_ROOT_DIR $ENV{HARU_ROOT_DIR})
else()
set(HARU_ROOT_DIR "")
endif()
set(_haru_SEARCH_DIRS

View File

@ -13,9 +13,13 @@
# also defined, but not for general use are
# ICU_LIBRARY_xxx, where to find the icu libraries.
# If ICU_ROOT_DIR was defined in the environment, use it.
IF(NOT ICU_ROOT_DIR AND NOT $ENV{ICU_ROOT_DIR} STREQUAL "")
# If `ICU_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED ICU_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{ICU_ROOT_DIR})
SET(ICU_ROOT_DIR $ENV{ICU_ROOT_DIR})
ELSE()
SET(ICU_ROOT_DIR "")
ENDIF()
if(Boost_USE_STATIC_LIBS)

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# JACK_LIBRARY, where to find the JACK library.
# If JACK_ROOT_DIR was defined in the environment, use it.
IF(NOT JACK_ROOT_DIR AND NOT $ENV{JACK_ROOT_DIR} STREQUAL "")
# If `JACK_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED JACK_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{JACK_ROOT_DIR})
SET(JACK_ROOT_DIR $ENV{JACK_ROOT_DIR})
ELSE()
SET(JACK_ROOT_DIR "")
ENDIF()
SET(_jack_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# JEMALLOC_LIBRARY, where to find the JeMalloc library.
# If JEMALLOC_ROOT_DIR was defined in the environment, use it.
IF(NOT JEMALLOC_ROOT_DIR AND NOT $ENV{JEMALLOC_ROOT_DIR} STREQUAL "")
# If `JEMALLOC_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED JEMALLOC_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{JEMALLOC_ROOT_DIR})
SET(JEMALLOC_ROOT_DIR $ENV{JEMALLOC_ROOT_DIR})
ELSE()
SET(JEMALLOC_ROOT_DIR "")
ENDIF()
SET(_jemalloc_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# LZO_LIBRARY, where to find the LZO library.
# If LZO_ROOT_DIR was defined in the environment, use it.
IF(NOT LZO_ROOT_DIR AND NOT $ENV{LZO_ROOT_DIR} STREQUAL "")
# If `LZO_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED LZO_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{LZO_ROOT_DIR})
SET(LZO_ROOT_DIR $ENV{LZO_ROOT_DIR})
ELSE()
SET(LZO_ROOT_DIR "")
ENDIF()
SET(_lzo_SEARCH_DIRS

View File

@ -13,9 +13,13 @@
# MOLTENVK_FOUND, If false, do not try to use MoltenVK.
#
# If MOLTENVK_ROOT_DIR was defined in the environment, use it.
IF(NOT MOLTENVK_ROOT_DIR AND NOT $ENV{MOLTENVK_ROOT_DIR} STREQUAL "")
# If `MOLTENVK_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED MOLTENVK_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{MOLTENVK_ROOT_DIR})
SET(MOLTENVK_ROOT_DIR $ENV{MOLTENVK_ROOT_DIR})
ELSE()
SET(MOLTENVK_ROOT_DIR "")
ENDIF()
SET(_moltenvk_SEARCH_DIRS

View File

@ -11,9 +11,13 @@
# This can also be an environment variable.
# NANOVDB_FOUND, If false, do not try to use NanoVDB.
# If NANOVDB_ROOT_DIR was defined in the environment, use it.
IF(NOT NANOVDB_ROOT_DIR AND NOT $ENV{NANOVDB_ROOT_DIR} STREQUAL "")
# If `NANOVDB_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED NANOVDB_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{NANOVDB_ROOT_DIR})
SET(NANOVDB_ROOT_DIR $ENV{NANOVDB_ROOT_DIR})
ELSE()
SET(NANOVDB_ROOT_DIR "")
ENDIF()
SET(_nanovdb_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# OSL_LIBRARY_VERSION_MAJOR, OSL_LIBRARY_VERSION_MINOR, the major
# and minor versions of OSL library if found.
# If OSL_ROOT_DIR was defined in the environment, use it.
IF(NOT OSL_ROOT_DIR AND NOT $ENV{OSL_ROOT_DIR} STREQUAL "")
# If `OSL_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED OSL_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{OSL_ROOT_DIR})
SET(OSL_ROOT_DIR $ENV{OSL_ROOT_DIR})
ELSE()
SET(OSL_ROOT_DIR "")
ENDIF()
SET(_osl_FIND_COMPONENTS

View File

@ -20,9 +20,13 @@
# Where '/opt/opencollada' is the base dir:
# /opt/opencollada/COLLADABaseUtils/include/COLLADABUPlatform.h
# If OPENCOLLADA_ROOT_DIR was defined in the environment, use it.
IF(NOT OPENCOLLADA_ROOT_DIR AND NOT $ENV{OPENCOLLADA_ROOT_DIR} STREQUAL "")
# If `OPENCOLLADA_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED OPENCOLLADA_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{OPENCOLLADA_ROOT_DIR})
SET(OPENCOLLADA_ROOT_DIR $ENV{OPENCOLLADA_ROOT_DIR})
ELSE()
SET(OPENCOLLADA_ROOT_DIR "")
ENDIF()
SET(_opencollada_FIND_INCLUDES

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# OPENCOLORIO_LIBRARY, where to find the OpenColorIO library.
# If OPENCOLORIO_ROOT_DIR was defined in the environment, use it.
IF(NOT OPENCOLORIO_ROOT_DIR AND NOT $ENV{OPENCOLORIO_ROOT_DIR} STREQUAL "")
# If `OPENCOLORIO_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED OPENCOLORIO_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{OPENCOLORIO_ROOT_DIR})
SET(OPENCOLORIO_ROOT_DIR $ENV{OPENCOLORIO_ROOT_DIR})
ELSE()
SET(OPENCOLORIO_ROOT_DIR "")
ENDIF()
SET(_opencolorio_FIND_COMPONENTS

View File

@ -22,9 +22,13 @@
# also defined, but not for general use are
# OPENEXR_LIBRARY, where to find the OpenEXR library.
# If OPENEXR_ROOT_DIR was defined in the environment, use it.
IF(NOT OPENEXR_ROOT_DIR AND NOT $ENV{OPENEXR_ROOT_DIR} STREQUAL "")
# If `OPENEXR_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED OPENEXR_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{OPENEXR_ROOT_DIR})
SET(OPENEXR_ROOT_DIR $ENV{OPENEXR_ROOT_DIR})
ELSE()
SET(OPENEXR_ROOT_DIR "")
ENDIF()
# Old versions (before 2.0?) do not have any version string,

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# OPENIMAGEDENOISE_LIBRARY, where to find the OpenImageDenoise library.
# If OPENIMAGEDENOISE_ROOT_DIR was defined in the environment, use it.
IF(NOT OPENIMAGEDENOISE_ROOT_DIR AND NOT $ENV{OPENIMAGEDENOISE_ROOT_DIR} STREQUAL "")
# If `OPENIMAGEDENOISE_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED OPENIMAGEDENOISE_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{OPENIMAGEDENOISE_ROOT_DIR})
SET(OPENIMAGEDENOISE_ROOT_DIR $ENV{OPENIMAGEDENOISE_ROOT_DIR})
ELSE()
SET(OPENIMAGEDENOISE_ROOT_DIR "")
ENDIF()
SET(_openimagedenoise_SEARCH_DIRS

View File

@ -17,9 +17,13 @@
# also defined, but not for general use are
# OPENIMAGEIO_LIBRARY, where to find the OpenImageIO library.
# If OPENIMAGEIO_ROOT_DIR was defined in the environment, use it.
IF(NOT OPENIMAGEIO_ROOT_DIR AND NOT $ENV{OPENIMAGEIO_ROOT_DIR} STREQUAL "")
# If `OPENIMAGEIO_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED OPENIMAGEIO_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{OPENIMAGEIO_ROOT_DIR})
SET(OPENIMAGEIO_ROOT_DIR $ENV{OPENIMAGEIO_ROOT_DIR})
ELSE()
SET(OPENIMAGEIO_ROOT_DIR "")
ENDIF()
SET(_openimageio_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# OPENJPEG_LIBRARY, where to find the OpenJPEG library.
# If OPENJPEG_ROOT_DIR was defined in the environment, use it.
IF(NOT OPENJPEG_ROOT_DIR AND NOT $ENV{OPENJPEG_ROOT_DIR} STREQUAL "")
# If `OPENJPEG_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED OPENJPEG_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{OPENJPEG_ROOT_DIR})
SET(OPENJPEG_ROOT_DIR $ENV{OPENJPEG_ROOT_DIR})
ELSE()
SET(OPENJPEG_ROOT_DIR "")
ENDIF()
SET(_openjpeg_SEARCH_DIRS

View File

@ -12,9 +12,13 @@
# This can also be an environment variable.
# OPENSUBDIV_FOUND, if false, do not try to use OpenSubdiv.
# If OPENSUBDIV_ROOT_DIR was defined in the environment, use it.
IF(NOT OPENSUBDIV_ROOT_DIR AND NOT $ENV{OPENSUBDIV_ROOT_DIR} STREQUAL "")
# If `OPENSUBDIV_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED OPENSUBDIV_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{OPENSUBDIV_ROOT_DIR})
SET(OPENSUBDIV_ROOT_DIR $ENV{OPENSUBDIV_ROOT_DIR})
ELSE()
SET(OPENSUBDIV_ROOT_DIR "")
ENDIF()
SET(_opensubdiv_FIND_COMPONENTS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# OPENVDB_LIBRARY, where to find the OPENVDB library.
# If OPENVDB_ROOT_DIR was defined in the environment, use it.
IF(NOT OPENVDB_ROOT_DIR AND NOT $ENV{OPENVDB_ROOT_DIR} STREQUAL "")
# If `OPENVDB_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED OPENVDB_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{OPENVDB_ROOT_DIR})
SET(OPENVDB_ROOT_DIR $ENV{OPENVDB_ROOT_DIR})
ELSE()
SET(OPENVDB_ROOT_DIR "")
ENDIF()
SET(_openvdb_SEARCH_DIRS

View File

@ -11,9 +11,13 @@
# This can also be an environment variable.
# OPTIX_FOUND, If false, do not try to use OptiX.
# If OPTIX_ROOT_DIR was defined in the environment, use it.
IF(NOT OPTIX_ROOT_DIR AND NOT $ENV{OPTIX_ROOT_DIR} STREQUAL "")
# If `OPTIX_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED OPTIX_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{OPTIX_ROOT_DIR})
SET(OPTIX_ROOT_DIR $ENV{OPTIX_ROOT_DIR})
ELSE()
SET(OPTIX_ROOT_DIR "")
ENDIF()
SET(_optix_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# PCRE_LIBRARY, where to find the PCRE library.
# If PCRE_ROOT_DIR was defined in the environment, use it.
IF(NOT PCRE_ROOT_DIR AND NOT $ENV{PCRE_ROOT_DIR} STREQUAL "")
# If `PCRE_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED PCRE_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{PCRE_ROOT_DIR})
SET(PCRE_ROOT_DIR $ENV{PCRE_ROOT_DIR})
ELSE()
SET(PCRE_ROOT_DIR "")
ENDIF()
SET(_pcre_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# POTRACE_LIBRARY, where to find the POTRACE library.
# If POTRACE_ROOT_DIR was defined in the environment, use it.
IF(NOT POTRACE_ROOT_DIR AND NOT $ENV{POTRACE_ROOT_DIR} STREQUAL "")
# If `POTRACE_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED POTRACE_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{POTRACE_ROOT_DIR})
SET(POTRACE_ROOT_DIR $ENV{POTRACE_ROOT_DIR})
ELSE()
SET(POTRACE_ROOT_DIR "")
ENDIF()
SET(_potrace_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# PUGIXML_LIBRARY, where to find the PugiXML library.
# If PUGIXML_ROOT_DIR was defined in the environment, use it.
IF(NOT PUGIXML_ROOT_DIR AND NOT $ENV{PUGIXML_ROOT_DIR} STREQUAL "")
# If `PUGIXML_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED PUGIXML_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{PUGIXML_ROOT_DIR})
SET(PUGIXML_ROOT_DIR $ENV{PUGIXML_ROOT_DIR})
ELSE()
SET(PUGIXML_ROOT_DIR "")
ENDIF()
SET(_pugixml_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# LIBPULSE_LIBRARY, where to find the PulseAudio library.
# If LIBPULSE_ROOT_DIR was defined in the environment, use it.
IF(NOT LIBPULSE_ROOT_DIR AND NOT $ENV{LIBPULSE_ROOT_DIR} STREQUAL "")
# If `LIBPULSE_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED LIBPULSE_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{LIBPULSE_ROOT_DIR})
SET(LIBPULSE_ROOT_DIR $ENV{LIBPULSE_ROOT_DIR})
ELSE()
SET(LIBPULSE_ROOT_DIR "")
ENDIF()
SET(_pulse_SEARCH_DIRS

View File

@ -27,9 +27,13 @@
# also defined, but not for general use are
# PYTHON_LIBRARY, where to find the python library.
# If PYTHON_ROOT_DIR was defined in the environment, use it.
IF(NOT PYTHON_ROOT_DIR AND NOT $ENV{PYTHON_ROOT_DIR} STREQUAL "")
# If `PYTHON_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED PYTHON_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{PYTHON_ROOT_DIR})
SET(PYTHON_ROOT_DIR $ENV{PYTHON_ROOT_DIR})
ELSE()
SET(PYTHON_ROOT_DIR "")
ENDIF()
SET(_PYTHON_VERSION_SUPPORTED 3.10)

View File

@ -14,9 +14,13 @@
# also defined, but not for general use are
# SDL2_LIBRARY, where to find the SDL library.
# If SDL2_ROOT_DIR was defined in the environment, use it.
IF(NOT SDL2_ROOT_DIR AND NOT $ENV{SDL2_ROOT_DIR} STREQUAL "")
# If `SDL2_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED SDL2_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{SDL2_ROOT_DIR})
SET(SDL2_ROOT_DIR $ENV{SDL2_ROOT_DIR})
ELSE()
SET(SDL2_ROOT_DIR "")
ENDIF()
SET(_sdl2_SEARCH_DIRS

View File

@ -13,9 +13,13 @@
# SHADERC_FOUND, If false, do not try to use ShaderC.
#
# If SHADERC_ROOT_DIR was defined in the environment, use it.
IF(NOT SHADERC_ROOT_DIR AND NOT $ENV{SHADERC_ROOT_DIR} STREQUAL "")
# If `SHADERC_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED SHADERC_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{SHADERC_ROOT_DIR})
SET(SHADERC_ROOT_DIR $ENV{SHADERC_ROOT_DIR})
ELSE()
SET(SHADERC_ROOT_DIR "")
ENDIF()
SET(_shaderc_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# LIBSNDFILE_LIBRARY, where to find the SndFile library.
# If LIBSNDFILE_ROOT_DIR was defined in the environment, use it.
IF(NOT LIBSNDFILE_ROOT_DIR AND NOT $ENV{LIBSNDFILE_ROOT_DIR} STREQUAL "")
# If `LIBSNDFILE_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED LIBSNDFILE_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{LIBSNDFILE_ROOT_DIR})
SET(LIBSNDFILE_ROOT_DIR $ENV{LIBSNDFILE_ROOT_DIR})
ELSE()
SET(LIBSNDFILE_ROOT_DIR "")
ENDIF()
SET(_sndfile_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# SPACENAV_LIBRARY, where to find the Spacenav library.
# If SPACENAV_ROOT_DIR was defined in the environment, use it.
IF(NOT SPACENAV_ROOT_DIR AND NOT $ENV{SPACENAV_ROOT_DIR} STREQUAL "")
# If `SPACENAV_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED SPACENAV_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{SPACENAV_ROOT_DIR})
SET(SPACENAV_ROOT_DIR $ENV{SPACENAV_ROOT_DIR})
ELSE()
SET(SPACENAV_ROOT_DIR "")
ENDIF()
SET(_spacenav_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# TBB_LIBRARY, where to find the TBB library.
# If TBB_ROOT_DIR was defined in the environment, use it.
IF(NOT TBB_ROOT_DIR AND NOT $ENV{TBB_ROOT_DIR} STREQUAL "")
# If `TBB_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED TBB_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{TBB_ROOT_DIR})
SET(TBB_ROOT_DIR $ENV{TBB_ROOT_DIR})
ELSE()
SET(TBB_ROOT_DIR "")
ENDIF()
SET(_tbb_SEARCH_DIRS

View File

@ -13,9 +13,13 @@
# USD_FOUND, If false, do not try to use USD.
#
# If USD_ROOT_DIR was defined in the environment, use it.
IF(NOT USD_ROOT_DIR AND NOT $ENV{USD_ROOT_DIR} STREQUAL "")
# If `USD_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED USD_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{USD_ROOT_DIR})
SET(USD_ROOT_DIR $ENV{USD_ROOT_DIR})
ELSE()
SET(USD_ROOT_DIR "")
ENDIF()
SET(_usd_SEARCH_DIRS

View File

@ -13,9 +13,13 @@
# VULKAN_FOUND, If false, do not try to use Vulkan.
#
# If VULKAN_ROOT_DIR was defined in the environment, use it.
IF(NOT VULKAN_ROOT_DIR AND NOT $ENV{VULKAN_ROOT_DIR} STREQUAL "")
# If `VULKAN_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED VULKAN_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{VULKAN_ROOT_DIR})
SET(VULKAN_ROOT_DIR $ENV{VULKAN_ROOT_DIR})
ELSE()
SET(VULKAN_ROOT_DIR "")
ENDIF()
SET(_vulkan_SEARCH_DIRS

View File

@ -14,9 +14,13 @@
# also defined, but not for general use are
# WEBP_LIBRARY, where to find the WEBP library.
# If WEBP_ROOT_DIR was defined in the environment, use it.
IF(NOT WEBP_ROOT_DIR AND NOT $ENV{WEBP_ROOT_DIR} STREQUAL "")
# If `WEBP_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED WEBP_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{WEBP_ROOT_DIR})
SET(WEBP_ROOT_DIR $ENV{WEBP_ROOT_DIR})
ELSE()
SET(WEBP_ROOT_DIR "")
ENDIF()
SET(_webp_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# XML2_LIBRARY, where to find the XML2 library.
# If XML2_ROOT_DIR was defined in the environment, use it.
IF(NOT XML2_ROOT_DIR AND NOT $ENV{XML2_ROOT_DIR} STREQUAL "")
# If `XML2_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED XML2_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{XML2_ROOT_DIR})
SET(XML2_ROOT_DIR $ENV{XML2_ROOT_DIR})
ELSE()
SET(XML2_ROOT_DIR "")
ENDIF()
SET(_xml2_SEARCH_DIRS

View File

@ -23,9 +23,13 @@
# also defined, but not for general use are
# XR_OPENXR_SDK_LOADER_LIBRARY, where to find the OpenXR-SDK loader library.
# If XR_OPENXR_SDK_ROOT_DIR was defined in the environment, use it.
IF(NOT XR_OPENXR_SDK_ROOT_DIR AND NOT $ENV{XR_OPENXR_SDK_ROOT_DIR} STREQUAL "")
# If `XR_OPENXR_SDK_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED XR_OPENXR_SDK_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{XR_OPENXR_SDK_ROOT_DIR})
SET(XR_OPENXR_SDK_ROOT_DIR $ENV{XR_OPENXR_SDK_ROOT_DIR})
ELSE()
SET(XR_OPENXR_SDK_ROOT_DIR "")
ENDIF()
SET(_xr_openxr_sdk_SEARCH_DIRS

View File

@ -15,9 +15,13 @@
# also defined, but not for general use are
# ZSTD_LIBRARY, where to find the Zstd library.
# If ZSTD_ROOT_DIR was defined in the environment, use it.
IF(NOT ZSTD_ROOT_DIR AND NOT $ENV{ZSTD_ROOT_DIR} STREQUAL "")
# If `ZSTD_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED ZSTD_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{ZSTD_ROOT_DIR})
SET(ZSTD_ROOT_DIR $ENV{ZSTD_ROOT_DIR})
ELSE()
SET(ZSTD_ROOT_DIR "")
ENDIF()
SET(_zstd_SEARCH_DIRS

View File

@ -11,9 +11,13 @@
# This can also be an environment variable.
# SSE2NEON_FOUND, If false, do not try to use sse2neon.
# If SSE2NEON_ROOT_DIR was defined in the environment, use it.
IF(NOT SSE2NEON_ROOT_DIR AND NOT $ENV{SSE2NEON_ROOT_DIR} STREQUAL "")
# If `SSE2NEON_ROOT_DIR` was defined in the environment, use it.
IF(DEFINED SSE2NEON_ROOT_DIR)
# Pass.
ELSEIF(DEFINED ENV{SSE2NEON_ROOT_DIR})
SET(SSE2NEON_ROOT_DIR $ENV{SSE2NEON_ROOT_DIR})
ELSE()
SET(SSE2NEON_ROOT_DIR "")
ENDIF()
SET(_sse2neon_SEARCH_DIRS

View File

@ -39,6 +39,8 @@ macro(BLENDER_SRC_GTEST_EX)
unset(_current_include_directories)
if(WIN32)
set(MANIFEST "${CMAKE_BINARY_DIR}/tests.exe.manifest")
else()
set(MANIFEST "")
endif()
add_executable(${TARGET_NAME} ${ARG_SRC} ${MANIFEST})
@ -63,10 +65,13 @@ macro(BLENDER_SRC_GTEST_EX)
bf_intern_guardedalloc
extern_gtest
extern_gmock
# needed for glog
${PTHREADS_LIBRARIES}
# Needed for GLOG.
${GLOG_LIBRARIES}
${GFLAGS_LIBRARIES})
if(DEFINED PTHREADS_LIBRARIES) # Needed for GLOG.
target_link_libraries(${TARGET_NAME} PRIVATE ${PTHREADS_LIBRARIES})
endif()
if(WITH_OPENMP_STATIC)
target_link_libraries(${TARGET_NAME} PRIVATE ${OpenMP_LIBRARIES})
endif()
@ -102,8 +107,8 @@ macro(BLENDER_SRC_GTEST_EX)
endif()
if(WIN32)
set_target_properties(${TARGET_NAME} PROPERTIES VS_GLOBAL_VcpkgEnabled "false")
unset(MANIFEST)
endif()
unset(MANIFEST)
unset(TEST_INC)
unset(TEST_INC_SYS)
unset(TARGET_NAME)

View File

@ -186,8 +186,6 @@ endif()
# C++ standards conformace (/permissive-) is available on msvc 15.5 (1912) and up
if(NOT MSVC_CLANG)
string(APPEND CMAKE_CXX_FLAGS " /permissive-")
# Two-phase name lookup does not place nicely with OpenMP yet, so disable for now
string(APPEND CMAKE_CXX_FLAGS " /Zc:twoPhase-")
endif()
if(WITH_WINDOWS_SCCACHE AND CMAKE_VS_MSBUILD_COMMAND)

View File

@ -0,0 +1,36 @@
"""
This example shows how to use B-Bone segment matrices to emulate deformation
produced by the Armature modifier or constraint when assigned to the given bone
(without Preserve Volume). The coordinates are processed in armature Pose space:
"""
def bbone_deform_matrix(pose_bone, point):
index, blend_next = pose_bone.bbone_segment_index(point)
rest1 = pose_bone.bbone_segment_matrix(index, rest=True)
pose1 = pose_bone.bbone_segment_matrix(index, rest=False)
deform1 = pose1 @ rest1.inverted()
# bbone_segment_index ensures that index + 1 is always valid
rest2 = pose_bone.bbone_segment_matrix(index + 1, rest=True)
pose2 = pose_bone.bbone_segment_matrix(index + 1, rest=False)
deform2 = pose2 @ rest2.inverted()
deform = deform1 * (1 - blend_next) + deform2 * blend_next
return pose_bone.matrix @ deform @ pose_bone.bone.matrix_local.inverted()
# Armature modifier deforming vertices:
mesh = bpy.data.objects["Mesh"]
pose_bone = bpy.data.objects["Armature"].pose.bones["Bone"]
for vertex in mesh.data.vertices:
vertex.co = bbone_deform_matrix(pose_bone, vertex.co) @ vertex.co
# Armature constraint modifying an object transform:
empty = bpy.data.objects["Empty"]
matrix = empty.matrix_world
empty.matrix_world = bbone_deform_matrix(pose_bone, matrix.translation) @ matrix

View File

@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# This is a quite stupid script which extracts bmesh api docs from
# 'bmesh_opdefines.c' in order to avoid having to add a lot of introspection
# 'bmesh_opdefines.cc' in order to avoid having to add a lot of introspection
# data access into the api.
#
# The script is stupid because it makes assumptions about formatting...
@ -19,7 +19,7 @@ import re
CURRENT_DIR = os.path.abspath(os.path.dirname(__file__))
SOURCE_DIR = os.path.normpath(os.path.abspath(os.path.normpath(os.path.join(CURRENT_DIR, "..", ".."))))
FILE_OP_DEFINES_C = os.path.join(SOURCE_DIR, "source", "blender", "bmesh", "intern", "bmesh_opdefines.c")
FILE_OP_DEFINES_CC = os.path.join(SOURCE_DIR, "source", "blender", "bmesh", "intern", "bmesh_opdefines.cc")
OUT_RST = os.path.join(CURRENT_DIR, "rst", "bmesh.ops.rst")
HEADER = r"""
@ -43,7 +43,7 @@ This script shows how operators can be used to model a link of a chain.
def main():
fsrc = open(FILE_OP_DEFINES_C, 'r', encoding="utf-8")
fsrc = open(FILE_OP_DEFINES_CC, 'r', encoding="utf-8")
blocks = []
@ -157,6 +157,8 @@ def main():
l = l.strip()
# casts
l = l.replace("(int)", "")
l = re.sub(r'to_subtype_union\((.*?)\)', '{\\1}', l)
l = re.sub(r'eBMOpSlotSubType_Elem\((.*?)\)', '\\1', l)
l = l.replace("{", "(")
l = l.replace("}", ")")

View File

@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-2.0-or-later
set(INC
.
PUBLIC .
)
set(INC_SYS
@ -26,3 +26,4 @@ set(LIB
)
blender_add_lib(extern_curve_fit_nd "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
add_library(bf::extern::curve_fit_nd ALIAS extern_curve_fit_nd)

View File

@ -8,6 +8,8 @@ set(INC
set(INC_SYS
)
set(LIB
)
add_library(bf_intern_atomic INTERFACE)

View File

@ -267,6 +267,7 @@ void CPUDevice::build_bvh(BVH *bvh, Progress &progress, bool refit)
if (bvh->params.bvh_layout == BVH_LAYOUT_EMBREE ||
bvh->params.bvh_layout == BVH_LAYOUT_MULTI_OPTIX_EMBREE ||
bvh->params.bvh_layout == BVH_LAYOUT_MULTI_METAL_EMBREE ||
bvh->params.bvh_layout == BVH_LAYOUT_MULTI_HIPRT_EMBREE ||
bvh->params.bvh_layout == BVH_LAYOUT_MULTI_EMBREEGPU_EMBREE)
{
BVHEmbree *const bvh_embree = static_cast<BVHEmbree *>(bvh);

View File

@ -142,6 +142,11 @@ class MultiDevice : public Device {
return BVH_LAYOUT_MULTI_EMBREEGPU_EMBREE;
}
const BVHLayoutMask BVH_LAYOUT_HIPRT_EMBREE = (BVH_LAYOUT_HIPRT | BVH_LAYOUT_EMBREE);
if ((bvh_layout_mask_all & BVH_LAYOUT_HIPRT_EMBREE) == BVH_LAYOUT_HIPRT_EMBREE) {
return BVH_LAYOUT_MULTI_HIPRT_EMBREE;
}
return bvh_layout_mask;
}
@ -214,8 +219,8 @@ class MultiDevice : public Device {
params.bvh_layout = sub.device->info.type == DEVICE_METAL ? BVH_LAYOUT_METAL :
BVH_LAYOUT_EMBREE;
else if (bvh->params.bvh_layout == BVH_LAYOUT_MULTI_HIPRT_EMBREE)
params.bvh_layout = sub.device->info.type == DEVICE_HIPRT ? BVH_LAYOUT_HIPRT :
BVH_LAYOUT_EMBREE;
params.bvh_layout = sub.device->info.type == DEVICE_HIP ? BVH_LAYOUT_HIPRT :
BVH_LAYOUT_EMBREE;
else if (bvh->params.bvh_layout == BVH_LAYOUT_MULTI_EMBREEGPU_EMBREE)
params.bvh_layout = sub.device->info.type == DEVICE_ONEAPI ? BVH_LAYOUT_EMBREEGPU :
BVH_LAYOUT_EMBREE;

View File

@ -1,6 +1,7 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2022 NVIDIA Corporation
* Copyright 2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2022 NVIDIA Corporation
* SPDX-FileCopyrightText: 2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "hydra/attribute.h"
#include "hydra/geometry.h"

View File

@ -136,7 +136,6 @@ set(SRC_KERNEL_CLOSURE_HEADERS
closure/emissive.h
closure/volume.h
closure/bsdf_principled_diffuse.h
closure/bsdf_principled_sheen.h
closure/bsdf_hair_principled.h
)

View File

@ -18,7 +18,6 @@
#include "kernel/closure/bsdf_hair.h"
#include "kernel/closure/bsdf_hair_principled.h"
#include "kernel/closure/bsdf_principled_diffuse.h"
#include "kernel/closure/bsdf_principled_sheen.h"
#include "kernel/closure/bssrdf.h"
#include "kernel/closure/volume.h"
// clang-format on
@ -210,11 +209,6 @@ ccl_device_inline int bsdf_sample(KernelGlobals kg,
*sampled_roughness = one_float2();
*eta = 1.0f;
break;
case CLOSURE_BSDF_PRINCIPLED_SHEEN_ID:
label = bsdf_principled_sheen_sample(sc, Ng, sd->wi, rand_xy, eval, wo, pdf);
*sampled_roughness = one_float2();
*eta = 1.0f;
break;
case CLOSURE_BSDF_SHEEN_ID:
label = bsdf_sheen_sample(sc, Ng, sd->wi, rand_xy, eval, wo, pdf);
*sampled_roughness = one_float2();
@ -351,10 +345,6 @@ ccl_device_inline void bsdf_roughness_eta(const KernelGlobals kg,
*roughness = one_float2();
*eta = 1.0f;
break;
case CLOSURE_BSDF_PRINCIPLED_SHEEN_ID:
*roughness = one_float2();
*eta = 1.0f;
break;
case CLOSURE_BSDF_SHEEN_ID:
alpha = ((ccl_private SheenBsdf *)sc)->roughness;
*roughness = make_float2(alpha, alpha);
@ -439,7 +429,6 @@ ccl_device_inline int bsdf_label(const KernelGlobals kg,
case CLOSURE_BSDF_PRINCIPLED_DIFFUSE_ID:
label = LABEL_REFLECT | LABEL_DIFFUSE;
break;
case CLOSURE_BSDF_PRINCIPLED_SHEEN_ID:
case CLOSURE_BSDF_SHEEN_ID:
label = LABEL_REFLECT | LABEL_DIFFUSE;
break;
@ -534,9 +523,6 @@ ccl_device_inline
case CLOSURE_BSDF_PRINCIPLED_DIFFUSE_ID:
eval = bsdf_principled_diffuse_eval(sc, sd->wi, wo, pdf);
break;
case CLOSURE_BSDF_PRINCIPLED_SHEEN_ID:
eval = bsdf_principled_sheen_eval(sc, sd->wi, wo, pdf);
break;
case CLOSURE_BSDF_SHEEN_ID:
eval = bsdf_sheen_eval(sc, sd->wi, wo, pdf);
break;
@ -615,10 +601,6 @@ ccl_device_inline Spectrum bsdf_albedo(ccl_private const ShaderData *sd,
albedo *= bsdf_microfacet_estimate_fresnel(
sd, (ccl_private const MicrofacetBsdf *)sc, reflection, transmission);
}
else if (sc->type == CLOSURE_BSDF_PRINCIPLED_SHEEN_ID) {
kernel_assert(reflection);
albedo *= ((ccl_private const PrincipledSheenBsdf *)sc)->avg_value;
}
else if (sc->type == CLOSURE_BSDF_HAIR_PRINCIPLED_ID) {
/* TODO(lukas): Principled Hair could also be split into a glossy and a transmission component,
* similar to Glass BSDFs. */

View File

@ -1,111 +0,0 @@
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#pragma once
/* DISNEY PRINCIPLED SHEEN BRDF
*
* Shading model by Brent Burley (Disney): "Physically Based Shading at Disney" (2012)
*/
#include "kernel/closure/bsdf_util.h"
CCL_NAMESPACE_BEGIN
typedef struct PrincipledSheenBsdf {
SHADER_CLOSURE_BASE;
float avg_value;
} PrincipledSheenBsdf;
static_assert(sizeof(ShaderClosure) >= sizeof(PrincipledSheenBsdf),
"PrincipledSheenBsdf is too large!");
ccl_device_inline float calculate_avg_principled_sheen_brdf(float3 N, float3 I)
{
/* To compute the average, we set the half-vector to the normal, resulting in
* NdotI = NdotL = NdotV = LdotH */
float NdotI = dot(N, I);
if (NdotI < 0.0f) {
return 0.0f;
}
return schlick_fresnel(NdotI) * NdotI;
}
ccl_device Spectrum
calculate_principled_sheen_brdf(float3 N, float3 V, float3 L, float3 H, ccl_private float *pdf)
{
float NdotL = dot(N, L);
float NdotV = dot(N, V);
if (NdotL < 0 || NdotV < 0) {
*pdf = 0.0f;
return zero_spectrum();
}
float LdotH = dot(L, H);
float value = schlick_fresnel(LdotH) * NdotL;
return make_spectrum(value);
}
ccl_device int bsdf_principled_sheen_setup(ccl_private const ShaderData *sd,
ccl_private PrincipledSheenBsdf *bsdf)
{
bsdf->type = CLOSURE_BSDF_PRINCIPLED_SHEEN_ID;
bsdf->avg_value = calculate_avg_principled_sheen_brdf(bsdf->N, sd->wi);
bsdf->sample_weight *= bsdf->avg_value;
return SD_BSDF | SD_BSDF_HAS_EVAL;
}
ccl_device Spectrum bsdf_principled_sheen_eval(ccl_private const ShaderClosure *sc,
const float3 wi,
const float3 wo,
ccl_private float *pdf)
{
ccl_private const PrincipledSheenBsdf *bsdf = (ccl_private const PrincipledSheenBsdf *)sc;
const float3 N = bsdf->N;
if (dot(N, wo) > 0.0f) {
const float3 V = wi;
const float3 L = wo;
const float3 H = normalize(L + V);
*pdf = fmaxf(dot(N, wo), 0.0f) * M_1_PI_F;
return calculate_principled_sheen_brdf(N, V, L, H, pdf);
}
else {
*pdf = 0.0f;
return zero_spectrum();
}
}
ccl_device int bsdf_principled_sheen_sample(ccl_private const ShaderClosure *sc,
float3 Ng,
float3 wi,
float2 rand,
ccl_private Spectrum *eval,
ccl_private float3 *wo,
ccl_private float *pdf)
{
ccl_private const PrincipledSheenBsdf *bsdf = (ccl_private const PrincipledSheenBsdf *)sc;
float3 N = bsdf->N;
sample_cos_hemisphere(N, rand, wo, pdf);
if (dot(Ng, *wo) > 0) {
float3 H = normalize(wi + *wo);
*eval = calculate_principled_sheen_brdf(N, wi, *wo, H, pdf);
}
else {
*eval = zero_spectrum();
*pdf = 0.0f;
}
return LABEL_REFLECT | LABEL_DIFFUSE;
}
CCL_NAMESPACE_END

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
/* CUDA kernel entry points */

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2021-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2021-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
/* Metal kernel entry points. */

View File

@ -1,6 +1,7 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2019, NVIDIA Corporation.
* Copyright 2019-2022 Blender Foundation. */
/* SPDX-FileCopyrightText: 2019, NVIDIA Corporation
* SPDX-FileCopyrightText: 2019-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
// clang-format off
#include "kernel/device/optix/compat.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#define WITH_OSL

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2021-2022 Blender Foundation. */
/* SPDX-FileCopyrightText: 2021-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
/* Copy of the regular kernels with additional shader ray-tracing kernel that takes
* much longer to compiler. This is only loaded when needed by the scene. */

View File

@ -79,6 +79,13 @@ ccl_device_inline bool light_link_object_match(KernelGlobals kg,
return true;
}
/* Emitter is OBJECT_NONE when the emitter is a world volume.
* It is not explicitly linkable to any object, so assume it is coming from the default light
* set which affects all objects in the scene. */
if (object_emitter == OBJECT_NONE) {
return true;
}
const uint64_t set_membership = kernel_data_fetch(objects, object_emitter).light_set_membership;
const uint receiver_set = (object_receiver != OBJECT_NONE) ?
kernel_data_fetch(objects, object_receiver).receiver_light_set :

View File

@ -21,7 +21,6 @@
#include "kernel/closure/bsdf_hair.h"
#include "kernel/closure/bsdf_hair_principled.h"
#include "kernel/closure/bsdf_principled_diffuse.h"
#include "kernel/closure/bsdf_principled_sheen.h"
#include "kernel/closure/volume.h"
#include "kernel/closure/bsdf_diffuse_ramp.h"
#include "kernel/closure/bsdf_phong_ramp.h"
@ -651,29 +650,6 @@ ccl_device void osl_closure_principled_diffuse_setup(
sd->flag |= bsdf_principled_diffuse_setup(bsdf);
}
ccl_device void osl_closure_principled_sheen_setup(
KernelGlobals kg,
ccl_private ShaderData *sd,
uint32_t path_flag,
float3 weight,
ccl_private const PrincipledSheenClosure *closure)
{
if (osl_closure_skip(kg, sd, path_flag, LABEL_DIFFUSE)) {
return;
}
ccl_private PrincipledSheenBsdf *bsdf = (ccl_private PrincipledSheenBsdf *)bsdf_alloc(
sd, sizeof(PrincipledSheenBsdf), rgb_to_spectrum(weight));
if (!bsdf) {
return;
}
bsdf->N = closure->N;
bsdf->avg_value = 0.0f;
sd->flag |= bsdf_principled_sheen_setup(sd, bsdf);
}
/* Variable cone emissive closure
*
* This primitive emits in a cone having a configurable penumbra area where the light decays to 0

View File

@ -137,10 +137,6 @@ OSL_CLOSURE_STRUCT_BEGIN(PrincipledDiffuse, principled_diffuse)
OSL_CLOSURE_STRUCT_MEMBER(PrincipledDiffuse, FLOAT, float, roughness, NULL)
OSL_CLOSURE_STRUCT_END(PrincipledDiffuse, principled_diffuse)
OSL_CLOSURE_STRUCT_BEGIN(PrincipledSheen, principled_sheen)
OSL_CLOSURE_STRUCT_MEMBER(PrincipledSheen, VECTOR, packed_float3, N, NULL)
OSL_CLOSURE_STRUCT_END(PrincipledSheen, principled_sheen)
OSL_CLOSURE_STRUCT_BEGIN(GenericEmissive, emission)
OSL_CLOSURE_STRUCT_END(GenericEmissive, emission)

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#define WITH_OSL

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

View File

@ -1,5 +1,6 @@
/* SPDX-License-Identifier: Apache-2.0
* Copyright 2011-2022 Blender Foundation */
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
*
* SPDX-License-Identifier: Apache-2.0 */
#include "stdcycles.h"

Some files were not shown because too many files have changed in this diff Show More