The first two dimensions of scrambled, shuffled Sobol and shuffled PMJ02 are equivalent, so this makes no real difference for the first two dimensions. But Sobol allows us to naturally extend to more dimensions. Pretabulated Sobol is now always used, and the sampling pattern settings is now only available as a debug option. This in turn allows the following two things (also implemented): * Use proper 3D samples for combined lens + motion blur sampling. This notably reduces the noise on objects that are simultaneously out-of-focus and motion blurred. * Use proper 3D samples for combined light selection + light sampling. Cycles was already doing something clever here with 2D samples, but using 3D samples is more straightforward and avoids overloading one of the dimensions. In the future this will also allow for proper sampling of e.g. volumetric light sources and other things that may need three or four dimensions. Differential Revision: https://developer.blender.org/D16443
152 lines
2.3 KiB
CMake
152 lines
2.3 KiB
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
# Copyright 2011-2021 Blender Foundation
|
|
|
|
set(INC
|
|
..
|
|
../../sky/include
|
|
)
|
|
|
|
set(SRC
|
|
alembic.cpp
|
|
alembic_read.cpp
|
|
attribute.cpp
|
|
background.cpp
|
|
bake.cpp
|
|
camera.cpp
|
|
colorspace.cpp
|
|
constant_fold.cpp
|
|
film.cpp
|
|
geometry.cpp
|
|
hair.cpp
|
|
image.cpp
|
|
image_oiio.cpp
|
|
image_sky.cpp
|
|
image_vdb.cpp
|
|
integrator.cpp
|
|
light.cpp
|
|
light_tree.cpp
|
|
mesh.cpp
|
|
mesh_displace.cpp
|
|
mesh_subdivision.cpp
|
|
procedural.cpp
|
|
pointcloud.cpp
|
|
object.cpp
|
|
osl.cpp
|
|
particles.cpp
|
|
pass.cpp
|
|
curves.cpp
|
|
scene.cpp
|
|
shader.cpp
|
|
shader_graph.cpp
|
|
shader_nodes.cpp
|
|
stats.cpp
|
|
svm.cpp
|
|
tables.cpp
|
|
tabulated_sobol.cpp
|
|
volume.cpp
|
|
)
|
|
|
|
set(SRC_HEADERS
|
|
alembic.h
|
|
alembic_read.h
|
|
attribute.h
|
|
bake.h
|
|
background.h
|
|
camera.h
|
|
colorspace.h
|
|
constant_fold.h
|
|
film.h
|
|
geometry.h
|
|
hair.h
|
|
image.h
|
|
image_oiio.h
|
|
image_sky.h
|
|
image_vdb.h
|
|
integrator.h
|
|
light.h
|
|
light_tree.h
|
|
mesh.h
|
|
object.h
|
|
osl.h
|
|
particles.h
|
|
pass.h
|
|
procedural.h
|
|
pointcloud.h
|
|
curves.h
|
|
scene.h
|
|
shader.h
|
|
shader_graph.h
|
|
shader_nodes.h
|
|
stats.h
|
|
svm.h
|
|
tables.h
|
|
tabulated_sobol.h
|
|
volume.h
|
|
)
|
|
|
|
set(LIB
|
|
cycles_bvh
|
|
cycles_device
|
|
cycles_integrator
|
|
cycles_subd
|
|
cycles_util
|
|
)
|
|
|
|
if(CYCLES_STANDALONE_REPOSITORY)
|
|
list(APPEND LIB extern_sky)
|
|
else()
|
|
list(APPEND LIB bf_intern_sky)
|
|
endif()
|
|
|
|
if(WITH_CYCLES_OSL)
|
|
list(APPEND LIB
|
|
cycles_kernel_osl
|
|
)
|
|
|
|
set_property(SOURCE osl.cpp PROPERTY COMPILE_FLAGS ${RTTI_DISABLE_FLAGS})
|
|
endif()
|
|
|
|
if(WITH_OPENCOLORIO)
|
|
add_definitions(-DWITH_OCIO)
|
|
list(APPEND INC_SYS
|
|
${OPENCOLORIO_INCLUDE_DIRS}
|
|
)
|
|
list(APPEND LIB
|
|
${OPENCOLORIO_LIBRARIES}
|
|
)
|
|
if(WIN32 AND NOT USD_OVERRIDE_OPENCOLORIO)
|
|
add_definitions(-DOpenColorIO_SKIP_IMPORTS)
|
|
endif()
|
|
endif()
|
|
|
|
if(WITH_OPENVDB)
|
|
add_definitions(-DWITH_OPENVDB ${OPENVDB_DEFINITIONS})
|
|
list(APPEND INC_SYS
|
|
${OPENVDB_INCLUDE_DIRS}
|
|
)
|
|
list(APPEND LIB
|
|
${OPENVDB_LIBRARIES}
|
|
)
|
|
endif()
|
|
|
|
if(WITH_ALEMBIC)
|
|
add_definitions(-DWITH_ALEMBIC)
|
|
list(APPEND INC_SYS
|
|
${ALEMBIC_INCLUDE_DIRS}
|
|
)
|
|
list(APPEND LIB
|
|
${ALEMBIC_LIBRARIES}
|
|
)
|
|
endif()
|
|
|
|
if(WITH_NANOVDB)
|
|
list(APPEND INC_SYS
|
|
${NANOVDB_INCLUDE_DIRS}
|
|
)
|
|
endif()
|
|
|
|
include_directories(${INC})
|
|
include_directories(SYSTEM ${INC_SYS})
|
|
|
|
cycles_add_library(cycles_scene "${LIB}" ${SRC} ${SRC_HEADERS})
|