[Bf-blender-cvs] [56e61ca23fe] cycles-x: Cycles X: Ignore shadow catcher from holdout collection
Sergey Sharybin
noreply at git.blender.org
Fri Jul 16 09:58:01 CEST 2021
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);
More information about the Bf-blender-cvs
mailing list