Files
test/intern/cycles/scene/CMakeLists.txt
Nathan Vegdahl b0cc8e8dde Cycles: switch from pretabulated 2D PMJ02 to pretabulated 4D Sobol
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
2022-12-14 17:39:13 +01:00

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})