Blender Git Loki
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)
/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)
/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)