[Bf-blender-cvs] [aa20bd8908f] cycles-x: Fix shadow catcher denoiser after recent changes in Cycles X

Sergey Sharybin noreply at git.blender.org
Thu Jul 8 13:24:48 CEST 2021


Commit: aa20bd8908f47253184f82ce64ec08291c145efc
Author: Sergey Sharybin
Date:   Thu Jul 8 13:20:31 2021 +0200
Branches: cycles-x
https://developer.blender.org/rBaa20bd8908f47253184f82ce64ec08291c145efc

Fix shadow catcher denoiser after recent changes in Cycles X

The shadow catcher pass access requires combined pass.
This means that the combined pass can not be modified in-place before
the shadow catcher pass is calculated.

===================================================================

M	intern/cycles/integrator/denoiser_oidn.cpp

===================================================================

diff --git a/intern/cycles/integrator/denoiser_oidn.cpp b/intern/cycles/integrator/denoiser_oidn.cpp
index 12a0a1bad69..e4de4f8b3c1 100644
--- a/intern/cycles/integrator/denoiser_oidn.cpp
+++ b/intern/cycles/integrator/denoiser_oidn.cpp
@@ -513,9 +513,12 @@ void OIDNDenoiser::denoise_buffer(const BufferParams &buffer_params,
                              oidn_filter,
                              num_samples,
                              allow_inplace_modification);
-  context.denoise(PASS_COMBINED);
-  context.denoise(PASS_SHADOW_CATCHER);
+  /* NOTE: Passes are in the reverse order of their dependency. For example, Shadow Catcher pass
+   * uses combined pass, so the combined pass needs to be handled later. This is because of
+   * possible in-place modification of the input noisy passes. */
   context.denoise(PASS_SHADOW_CATCHER_MATTE);
+  context.denoise(PASS_SHADOW_CATCHER);
+  context.denoise(PASS_COMBINED);
 #endif
 
   /* TODO: It may be possible to avoid this copy, but we have to ensure that when other code copies



More information about the Bf-blender-cvs mailing list