[Bf-blender-cvs] [00a20aec074] master: Fix T103403: Lightgroup passes can contain lighting on shadow catchers
Lukas Stockner
noreply at git.blender.org
Fri Jan 6 02:37:21 CET 2023
Commit: 00a20aec074c3a10a2d2e1142c14cc533c90a6b3
Author: Lukas Stockner
Date: Fri Jan 6 02:32:03 2023 +0100
Branches: master
https://developer.blender.org/rB00a20aec074c3a10a2d2e1142c14cc533c90a6b3
Fix T103403: Lightgroup passes can contain lighting on shadow catchers
===================================================================
M intern/cycles/kernel/film/light_passes.h
===================================================================
diff --git a/intern/cycles/kernel/film/light_passes.h b/intern/cycles/kernel/film/light_passes.h
index dbc527f2d5d..4cfd1aef43a 100644
--- a/intern/cycles/kernel/film/light_passes.h
+++ b/intern/cycles/kernel/film/light_passes.h
@@ -364,7 +364,9 @@ ccl_device_inline void film_write_emission_or_background_pass(
}
# endif /* __DENOISING_FEATURES__ */
- if (lightgroup != LIGHTGROUP_NONE && kernel_data.film.pass_lightgroup != PASS_UNUSED) {
+ const bool is_shadowcatcher = (path_flag & PATH_RAY_SHADOW_CATCHER_HIT) != 0;
+ if (!is_shadowcatcher && lightgroup != LIGHTGROUP_NONE &&
+ kernel_data.film.pass_lightgroup != PASS_UNUSED) {
film_write_pass_spectrum(buffer + kernel_data.film.pass_lightgroup + 3 * lightgroup,
contribution);
}
@@ -373,13 +375,12 @@ ccl_device_inline void film_write_emission_or_background_pass(
/* Directly visible, write to emission or background pass. */
pass_offset = pass;
}
- else if (kernel_data.kernel_features & KERNEL_FEATURE_LIGHT_PASSES) {
+ else if (is_shadowcatcher) {
/* Don't write any light passes for shadow catcher, for easier
* compositing back together of the combined pass. */
- if (path_flag & PATH_RAY_SHADOW_CATCHER_HIT) {
- return;
- }
-
+ return;
+ }
+ else if (kernel_data.kernel_features & KERNEL_FEATURE_LIGHT_PASSES) {
if (path_flag & PATH_RAY_SURFACE_PASS) {
/* Indirectly visible through reflection. */
const Spectrum diffuse_weight = INTEGRATOR_STATE(state, path, pass_diffuse_weight);
More information about the Bf-blender-cvs
mailing list