Blender Git Commit Log

Git Commits -> Revision 5dea2ae

Revision 5dea2ae by Sergey Sharybin (cycles-x)
March 11, 2021, 14:01 (GMT)
Cycles: Support denoiser in the new integrator

Implemented as own classes which provide higher level API for rendering
pipeline. Currently placed in the integrator folder, which feels a bit
strange, but is easy to move these files around.

The idea is the following:

- Have every implementation to implement Denoiser interface, which
goes away from previous implementation on a device level. This allows
to more naturally consider Device a way to invoke kernels, without
business logic.

- Currently Denoiser operates on an entire RenderBuffer. In the future
this would need to be changed to operate on a list of render buffers
to support denoising of renders done on multi-device. Seems to be
"just" a straightforward extension of the currently implemented
simple API.

Currently Session is requesting denoising as a dedicated call of
PathTrace. This is something I am not really sure about: in a way this
feels wrong and Session can/should have direct access to denoiser. But
on another hand, having denoising done in the PathTracer allows to have
a more centralized and comprehensive logic around decision of how many
samples to render before update, when to start denoising and things
like this.

From actual implementation is only OpenImageDenoise with color buffer
is implemented. The rest would need a support from kernel.

Commit Details:

Full Hash: 5dea2ae83a5b03bd61aa7a2b4e23eeb99c3bab0d
Parent Commit: 8051c26
Lines Changed: +715, -20

8 Added Paths:

/intern/cycles/integrator/denoiser.cpp (+69, -0) (View)
/intern/cycles/integrator/denoiser.h (+90, -0) (View)
/intern/cycles/integrator/denoiser_device.cpp (+42, -0) (View)
/intern/cycles/integrator/denoiser_device.h (+37, -0) (View)
/intern/cycles/integrator/denoiser_nlm.cpp (+65, -0) (View)
/intern/cycles/integrator/denoiser_nlm.h (+37, -0) (View)
/intern/cycles/integrator/denoiser_oidn.cpp (+219, -0) (View)
/intern/cycles/integrator/denoiser_oidn.h (+51, -0) (View)

6 Modified Paths:

/intern/cycles/CMakeLists.txt (+9, -0) (Diff)
/intern/cycles/device/CMakeLists.txt (+0, -12) (Diff)
/intern/cycles/integrator/CMakeLists.txt (+8, -0) (Diff)
/intern/cycles/integrator/path_trace.cpp (+47, -2) (Diff)
/intern/cycles/integrator/path_trace.h (+19, -1) (Diff)
/intern/cycles/render/session.cpp (+22, -5) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021