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);
-                                       }
                                }
                        }
                }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to