[Bf-blender-cvs] [87674f432ec] temp-cycles-denoising: Cycles Denoising: Fix shadowing pass calculation

Lukas Stockner noreply at git.blender.org
Tue May 2 13:43:36 CEST 2017


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)




More information about the Bf-blender-cvs mailing list