[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