[Bf-blender-cvs] [da04caa] soc-2016-cycles_denoising: Cycles: Fix wrong sample variance variance calculation

Lukas Stockner noreply at git.blender.org
Sun Aug 21 06:18:21 CEST 2016


Commit: da04caa8128c470fcc755270e956080789be6776
Author: Lukas Stockner
Date:   Sun Aug 21 04:53:33 2016 +0200
Branches: soc-2016-cycles_denoising
https://developer.blender.org/rBda04caa8128c470fcc755270e956080789be6776

Cycles: Fix wrong sample variance variance calculation

The missed factor caused the NLM filtering of the buffer variance to essentially reduce to a simple box filter,
which overblurred the buffer variance and therefore caused problems with sharp edges in the shadow buffer.

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

M	intern/cycles/kernel/kernel_filter_pre.h

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

diff --git a/intern/cycles/kernel/kernel_filter_pre.h b/intern/cycles/kernel/kernel_filter_pre.h
index b46753d..39bb7c6 100644
--- a/intern/cycles/kernel/kernel_filter_pre.h
+++ b/intern/cycles/kernel/kernel_filter_pre.h
@@ -39,7 +39,7 @@ ccl_device void kernel_filter_divide_shadow(KernelGlobals *kg, int sample, float
 	unfiltered[idx+Bofs] = center_buffer[18] / max(center_buffer[17], 1e-7f);
 	float varFac = 1.0f / (sample * (sample-1));
 	sampleVariance[idx] = (center_buffer[16] + center_buffer[19]) * varFac;
-	sampleVarianceV[idx] = 0.5f * (center_buffer[16] - center_buffer[19]) * (center_buffer[16] - center_buffer[19]) * varFac;
+	sampleVarianceV[idx] = 0.5f * (center_buffer[16] - center_buffer[19]) * (center_buffer[16] - center_buffer[19]) * varFac * varFac;
 	bufferVariance[idx] = 0.5f * (unfiltered[idx] - unfiltered[idx+Bofs]) * (unfiltered[idx] - unfiltered[idx+Bofs]);
 }




More information about the Bf-blender-cvs mailing list