Commit: 87674f432ec8d6006c2afff018dd42907728afaf
Author: Lukas Stockner
Date:   Mon May 1 15:12:58 2017 +0200
Branches: temp-cycles-denoising
https://developer.blender.org/rB87674f432ec8d6006c2afff018dd42907728afaf

Cycles Denoising: Fix shadowing pass calculation

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

M       intern/cycles/kernel/kernel_passes.h
M       intern/cycles/kernel/kernel_path_state.h

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

diff --git a/intern/cycles/kernel/kernel_passes.h 
b/intern/cycles/kernel/kernel_passes.h
index 9e64518b82e..8ab4c724829 100644
--- a/intern/cycles/kernel/kernel_passes.h
+++ b/intern/cycles/kernel/kernel_passes.h
@@ -180,9 +180,6 @@ ccl_device_inline void 
kernel_update_denoising_features(KernelGlobals *kg,
                L->denoising_albedo += 
ensure_finite3(state->denoising_feature_weight * albedo);
 
                state->denoising_feature_weight = 0.0f;
-               if(!(state->flag & PATH_RAY_SHADOW_CATCHER)) {
-                       state->flag &= ~PATH_RAY_STORE_SHADOW_INFO;
-               }
        }
 #else
        (void) kg;
@@ -353,9 +350,9 @@ ccl_device_inline void kernel_write_result(KernelGlobals 
*kg, ccl_global float *
 #ifdef __DENOISING_FEATURES__
                if(kernel_data.film.pass_denoising_data) {
 #  ifdef __SHADOW_TRICKS__
-                       kernel_write_denoising_shadow(kg, buffer, sample, 
average(L->path_total), average(L->path_total_shaded));
+                       kernel_write_denoising_shadow(kg, buffer + 
kernel_data.film.pass_denoising_data, sample, average(L->path_total), 
average(L->path_total_shaded));
 #  else
-                       kernel_write_denoising_shadow(kg, buffer, sample, 0.0f, 
0.0f);
+                       kernel_write_denoising_shadow(kg, buffer + 
kernel_data.film.pass_denoising_data, sample, 0.0f, 0.0f);
 #  endif
                        if(kernel_data.film.pass_denoising_clean) {
                                float3 noisy, clean;
@@ -384,7 +381,7 @@ ccl_device_inline void kernel_write_result(KernelGlobals 
*kg, ccl_global float *
 
 #ifdef __DENOISING_FEATURES__
                if(kernel_data.film.pass_denoising_data) {
-                       kernel_write_denoising_shadow(kg, buffer, sample, 0.0f, 
0.0f);
+                       kernel_write_denoising_shadow(kg, buffer + 
kernel_data.film.pass_denoising_data, sample, 0.0f, 0.0f);
 
                        kernel_write_pass_float3_variance(buffer + 
kernel_data.film.pass_denoising_data + DENOISING_PASS_COLOR,
                                                          sample, 
make_float3(0.0f, 0.0f, 0.0f));
diff --git a/intern/cycles/kernel/kernel_path_state.h 
b/intern/cycles/kernel/kernel_path_state.h
index 9d1eef45710..0fa77d9e8bd 100644
--- a/intern/cycles/kernel/kernel_path_state.h
+++ b/intern/cycles/kernel/kernel_path_state.h
@@ -138,6 +138,10 @@ ccl_device_inline void path_state_next(KernelGlobals *kg, 
ccl_addr_space PathSta
 
        /* random number generator next bounce */
        state->rng_offset += PRNG_BOUNCE_NUM;
+
+       if((state->denoising_feature_weight == 0.0f) && !(state->flag & 
PATH_RAY_SHADOW_CATCHER)) {
+               state->flag &= ~PATH_RAY_STORE_SHADOW_INFO;
+       }
 }
 
 ccl_device_inline uint path_state_ray_visibility(KernelGlobals *kg, PathState 
*state)

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to