[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48072] trunk/blender/source/blender/ compositor/operations/COM_VariableSizeBokehBlurOperation.cpp: * Fixed brightness (was introduced by optimalization)

Jeroen Bakker j.bakker at atmind.nl
Tue Jun 19 10:49:01 CEST 2012


Revision: 48072
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48072
Author:   jbakker
Date:     2012-06-19 08:48:45 +0000 (Tue, 19 Jun 2012)
Log Message:
-----------
 * Fixed brightness (was introduced by optimalization)
 * added threshold functionality

still have to fix the background bleeding. not sure why it happens.
needs some revisites.

Modified Paths:
--------------
    trunk/blender/source/blender/compositor/operations/COM_VariableSizeBokehBlurOperation.cpp

Modified: trunk/blender/source/blender/compositor/operations/COM_VariableSizeBokehBlurOperation.cpp
===================================================================
--- trunk/blender/source/blender/compositor/operations/COM_VariableSizeBokehBlurOperation.cpp	2012-06-19 08:16:07 UTC (rev 48071)
+++ trunk/blender/source/blender/compositor/operations/COM_VariableSizeBokehBlurOperation.cpp	2012-06-19 08:48:45 UTC (rev 48072)
@@ -39,7 +39,7 @@
 	this->inputBokehProgram = NULL;
 	this->inputSizeProgram = NULL;
 	this->maxBlur = 32.0f;
-	this->threshold = 0.0f;
+	this->threshold = 1.0f;
 }
 
 
@@ -56,6 +56,7 @@
 	float readColor[4];
 	float bokeh[4];
 	float tempSize[4];
+	float tempSizeCenter[4];
 	float multiplier_accum[4] = {0.0f, 0.0f, 0.0f, 0.0f};
 	float color_accum[4]      = {0.0f, 0.0f, 0.0f, 0.0f};
 
@@ -64,33 +65,31 @@
 	int minx = x - maxBlur;
 	int maxx = x + maxBlur;
 	{
+		inputSizeProgram->read(tempSizeCenter, x, y, COM_PS_NEAREST, inputBuffers);
 		inputProgram->read(readColor, x, y, COM_PS_NEAREST, inputBuffers);
-		color_accum[0] += readColor[0];
-		color_accum[1] += readColor[1];
-		color_accum[2] += readColor[2];
-		color_accum[3] += readColor[3];
 		add_v4_v4(color_accum, readColor);
-		add_v3_fl(multiplier_accum, 1.0f);
+		add_v4_fl(multiplier_accum, 1.0f);
+		float sizeCenter = tempSizeCenter[0];
 		
 		for (int ny = miny; ny < maxy; ny += QualityStepHelper::getStep()) {
 			for (int nx = minx; nx < maxx; nx += QualityStepHelper::getStep()) {
 				if (nx >= 0 && nx < this->getWidth() && ny >= 0 && ny < getHeight()) {
 					inputSizeProgram->read(tempSize, nx, ny, COM_PS_NEAREST, inputBuffers);
 					float size = tempSize[0];
-//					size += this->threshold;
-					float dx = nx - x;
-					float dy = ny - y;
-					if (nx == x && ny == y) {
-						/* pass */
+					if ((sizeCenter > threshold && size > threshold) || size <= threshold) {
+						float dx = nx - x;
+						float dy = ny - y;
+						if (nx == x && ny == y) {
+						}
+						else if (size >= fabsf(dx) && size >= fabsf(dy)) {
+							float u = 256 + dx * 256 / size;
+							float v = 256 + dy * 256 / size;
+							inputBokehProgram->read(bokeh, u, v, COM_PS_NEAREST, inputBuffers);
+							inputProgram->read(readColor, nx, ny, COM_PS_NEAREST, inputBuffers);
+							madd_v4_v4v4(color_accum, bokeh, readColor);
+							add_v4_v4(multiplier_accum, bokeh);
+						}
 					}
-					else if (size >= fabsf(dx) && size >= fabsf(dy)) {
-						float u = 256 + dx * 256 / size;
-						float v = 256 + dy * 256 / size;
-						inputBokehProgram->read(bokeh, u, v, COM_PS_NEAREST, inputBuffers);
-						inputProgram->read(readColor, nx, ny, COM_PS_NEAREST, inputBuffers);
-						madd_v4_v4v4(color_accum, bokeh, readColor);
-						add_v4_v4(multiplier_accum, bokeh);
-					}
 				}
 			}
 		}




More information about the Bf-blender-cvs mailing list