Commit: 56e61ca23fe0eb769dbbf3352bba8b60ec39d5ea
Author: Sergey Sharybin
Date:   Thu Jul 15 17:49:35 2021 +0200
Branches: cycles-x
https://developer.blender.org/rB56e61ca23fe0eb769dbbf3352bba8b60ec39d5ea

Cycles X: Ignore shadow catcher from holdout collection

Differential Revision: https://developer.blender.org/D11937

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

M       intern/cycles/kernel/kernel_accumulate.h
M       intern/cycles/kernel/kernel_shadow_catcher.h

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

diff --git a/intern/cycles/kernel/kernel_accumulate.h 
b/intern/cycles/kernel/kernel_accumulate.h
index 7417ad126d3..63fdf0dc912 100644
--- a/intern/cycles/kernel/kernel_accumulate.h
+++ b/intern/cycles/kernel/kernel_accumulate.h
@@ -242,6 +242,22 @@ ccl_device bool 
kernel_accum_shadow_catcher_transparent(INTEGRATOR_STATE_CONST_A
   return false;
 }
 
+ccl_device void 
kernel_accum_shadow_catcher_transparent_only(INTEGRATOR_STATE_CONST_ARGS,
+                                                             const float 
transparent,
+                                                             ccl_global float 
*ccl_restrict buffer)
+{
+  if (!kernel_data.integrator.has_shadow_catcher) {
+    return;
+  }
+
+  kernel_assert(kernel_data.film.pass_shadow_catcher_matte != PASS_UNUSED);
+
+  /* Matte pass. */
+  if (kernel_shadow_catcher_is_matte_path(INTEGRATOR_STATE_PASS)) {
+    kernel_write_pass_float(buffer + 
kernel_data.film.pass_shadow_catcher_matte + 3, transparent);
+  }
+}
+
 #endif /* __SHADOW_CATCHER__ */
 
 /* --------------------------------------------------------------------
@@ -441,11 +457,14 @@ ccl_device_inline void 
kernel_accum_transparent(INTEGRATOR_STATE_CONST_ARGS,
                                                 const float transparent,
                                                 ccl_global float *ccl_restrict 
render_buffer)
 {
+  ccl_global float *buffer = 
kernel_accum_pixel_render_buffer(INTEGRATOR_STATE_PASS,
+                                                              render_buffer);
+
   if (kernel_data.film.light_pass_flag & PASSMASK(COMBINED)) {
-    ccl_global float *buffer = 
kernel_accum_pixel_render_buffer(INTEGRATOR_STATE_PASS,
-                                                                render_buffer);
     kernel_write_pass_float(buffer + kernel_data.film.pass_combined + 3, 
transparent);
   }
+
+  kernel_accum_shadow_catcher_transparent_only(INTEGRATOR_STATE_PASS, 
transparent, buffer);
 }
 
 /* Write background contribution to render buffer.
diff --git a/intern/cycles/kernel/kernel_shadow_catcher.h 
b/intern/cycles/kernel/kernel_shadow_catcher.h
index 1c453e1d3f6..9671f4f6837 100644
--- a/intern/cycles/kernel/kernel_shadow_catcher.h
+++ b/intern/cycles/kernel/kernel_shadow_catcher.h
@@ -34,6 +34,9 @@ ccl_device_inline bool 
kernel_shadow_catcher_is_path_split_bounce(INTEGRATOR_STA
   if ((object_flag & SD_OBJECT_SHADOW_CATCHER) == 0) {
     return false;
   }
+  if (object_flag & SD_OBJECT_HOLDOUT_MASK) {
+    return false;
+  }
 
   const int path_flag = INTEGRATOR_STATE(path, flag);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to