Cycles already treats denoising fairly separate in its code, with a dedicated `Denoiser` base class used to describe denoising behavior. That class has been fully implemented for OIDN (`denoiser_oidn.cpp`), but for OptiX was mostly empty (`denoiser_optix.cpp`) and denoising was instead implemented in the OptiX device. That meant denoising code was split over various files and directories, making it a bit awkward to work with. This patch moves the OptiX denoising implementation into the existing `OptiXDenoiser` class, so that everything is in one place. There are no functional changes, code has been mostly moved as-is. To retain support for potential other denoiser implementations based on a GPU device in the future, the `DeviceDenoiser` base class was kept and slightly extended (and its file renamed to `denoiser_gpu.cpp` to follow similar naming rules as `path_trace_work_*.cpp`). Differential Revision: https://developer.blender.org/D16502
78 lines
1.4 KiB
CMake
78 lines
1.4 KiB
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
# Copyright 2011-2022 Blender Foundation
|
|
|
|
set(INC
|
|
..
|
|
)
|
|
|
|
set(SRC
|
|
adaptive_sampling.cpp
|
|
denoiser.cpp
|
|
denoiser_gpu.cpp
|
|
denoiser_oidn.cpp
|
|
denoiser_optix.cpp
|
|
path_trace.cpp
|
|
tile.cpp
|
|
pass_accessor.cpp
|
|
pass_accessor_cpu.cpp
|
|
pass_accessor_gpu.cpp
|
|
path_trace_display.cpp
|
|
path_trace_tile.cpp
|
|
path_trace_work.cpp
|
|
path_trace_work_cpu.cpp
|
|
path_trace_work_gpu.cpp
|
|
render_scheduler.cpp
|
|
shader_eval.cpp
|
|
work_balancer.cpp
|
|
work_tile_scheduler.cpp
|
|
)
|
|
|
|
set(SRC_HEADERS
|
|
adaptive_sampling.h
|
|
denoiser.h
|
|
denoiser_gpu.h
|
|
denoiser_oidn.h
|
|
denoiser_optix.h
|
|
path_trace.h
|
|
tile.h
|
|
pass_accessor.h
|
|
pass_accessor_cpu.h
|
|
pass_accessor_gpu.h
|
|
path_trace_display.h
|
|
path_trace_tile.h
|
|
path_trace_work.h
|
|
path_trace_work_cpu.h
|
|
path_trace_work_gpu.h
|
|
render_scheduler.h
|
|
shader_eval.h
|
|
work_balancer.h
|
|
work_tile_scheduler.h
|
|
)
|
|
|
|
set(LIB
|
|
cycles_device
|
|
|
|
# NOTE: Is required for RenderBuffers access. Might consider moving files around a bit to
|
|
# avoid such cyclic dependency.
|
|
cycles_session
|
|
|
|
cycles_util
|
|
)
|
|
|
|
if(WITH_OPENIMAGEDENOISE)
|
|
list(APPEND LIB
|
|
${OPENIMAGEDENOISE_LIBRARIES}
|
|
)
|
|
endif()
|
|
|
|
if(WITH_CYCLES_PATH_GUIDING)
|
|
list(APPEND LIB
|
|
${OPENPGL_LIBRARIES}
|
|
)
|
|
endif()
|
|
|
|
include_directories(${INC})
|
|
include_directories(SYSTEM ${INC_SYS})
|
|
|
|
cycles_add_library(cycles_integrator "${LIB}" ${SRC} ${SRC_HEADERS})
|