[Bf-blender-cvs] [a54b38c4f8] soc-2016-cycles_denoising: Cycles Denoising: Correct buffer variance calculation

Lukas Stockner noreply at git.blender.org
Wed Feb 1 05:19:10 CET 2017


Commit: a54b38c4f862717cceb6a240cb783ec5314700c6
Author: Lukas Stockner
Date:   Thu Jan 19 18:25:06 2017 +0100
Branches: soc-2016-cycles_denoising
https://developer.blender.org/rBa54b38c4f862717cceb6a240cb783ec5314700c6

Cycles Denoising: Correct buffer variance calculation

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

M	intern/cycles/kernel/filter/filter_prefilter.h

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

diff --git a/intern/cycles/kernel/filter/filter_prefilter.h b/intern/cycles/kernel/filter/filter_prefilter.h
index c1e1fabf0b..4be7ff3ed1 100644
--- a/intern/cycles/kernel/filter/filter_prefilter.h
+++ b/intern/cycles/kernel/filter/filter_prefilter.h
@@ -95,7 +95,7 @@ ccl_device void kernel_filter_combine_halves(int x, int y, float *mean, float *v
 
 	if(mean)     mean[idx] = 0.5f * (a[idx]+b[idx]);
 	if(variance) {
-		if(r == 0) variance[idx] = 0.5f * (a[idx]-b[idx])*(a[idx]-b[idx]);
+		if(r == 0) variance[idx] = 0.25f * (a[idx]-b[idx])*(a[idx]-b[idx]);
 		else {
 			variance[idx] = 0.0f;
 			float values[25];
@@ -103,7 +103,7 @@ ccl_device void kernel_filter_combine_halves(int x, int y, float *mean, float *v
 			for(int py = max(y-r, rect.y); py < min(y+r+1, rect.w); py++) {
 				for(int px = max(x-r, rect.x); px < min(x+r+1, rect.z); px++) {
 					int pidx = (py-rect.y)*buffer_w + (px-rect.x);
-					values[numValues++] = 0.5f * (a[pidx]-b[pidx])*(a[pidx]-b[pidx]);
+					values[numValues++] = 0.25f * (a[pidx]-b[pidx])*(a[pidx]-b[pidx]);
 				}
 			}
 			/* Insertion-sort the variances (fast enough for 25 elements). */




More information about the Bf-blender-cvs mailing list