Commit: ba0fbba897a405ed80dc20eec95e6750def7cc9d
Author: Jeroen Bakker
Date:   Tue Jul 15 20:25:11 2014 +0200
https://developer.blender.org/rBba0fbba897a405ed80dc20eec95e6750def7cc9d

Defocus + VarSizedBokeh

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

M       source/blender/compositor/intern/COM_MemoryBuffer.cpp
M       source/blender/compositor/intern/COM_MemoryBuffer.h
M       source/blender/compositor/intern/COM_MemoryBufferColor.h
M       source/blender/compositor/intern/COM_MemoryBufferValue.cpp
M       source/blender/compositor/intern/COM_MemoryBufferValue.h
M       source/blender/compositor/operations/COM_BokehBlurOperation.cpp
M       
source/blender/compositor/operations/COM_VariableSizeBokehBlurOperation.cpp

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

diff --git a/source/blender/compositor/intern/COM_MemoryBuffer.cpp 
b/source/blender/compositor/intern/COM_MemoryBuffer.cpp
index 55c819f..bdec873 100644
--- a/source/blender/compositor/intern/COM_MemoryBuffer.cpp
+++ b/source/blender/compositor/intern/COM_MemoryBuffer.cpp
@@ -170,25 +170,6 @@ float MemoryBuffer::getMaximumValue() const
     return 0.0f;
 }
 
-float MemoryBuffer::getMaximumValue(rcti *rect)
-{
-       rcti rect_clamp;
-
-       /* first clamp the rect by the bounds or we get un-initialized values */
-       BLI_rcti_isect(rect, &this->m_rect, &rect_clamp);
-
-       if (!BLI_rcti_is_empty(&rect_clamp)) {
-               MemoryBuffer *temp = MemoryBuffer::create(COM_DT_VALUE, 
&rect_clamp);
-               temp->copyContentFrom(this);
-               float result = temp->getMaximumValue();
-               delete temp;
-               return result;
-       }
-       else {
-               BLI_assert(0);
-               return 0.0f;
-       }
-}
 
 MemoryBuffer::~MemoryBuffer()
 {
diff --git a/source/blender/compositor/intern/COM_MemoryBuffer.h 
b/source/blender/compositor/intern/COM_MemoryBuffer.h
index 60dee84..1802c6f 100644
--- a/source/blender/compositor/intern/COM_MemoryBuffer.h
+++ b/source/blender/compositor/intern/COM_MemoryBuffer.h
@@ -251,7 +251,6 @@ public:
        
        float *convertToValueBuffer();
     virtual float getMaximumValue() const;
-       float getMaximumValue(rcti *rect);
 
        /**
         * @brief return the number of channels that form a single pixel.
diff --git a/source/blender/compositor/intern/COM_MemoryBufferColor.h 
b/source/blender/compositor/intern/COM_MemoryBufferColor.h
index c7591fc..f87736c 100644
--- a/source/blender/compositor/intern/COM_MemoryBufferColor.h
+++ b/source/blender/compositor/intern/COM_MemoryBufferColor.h
@@ -28,7 +28,7 @@ class MemoryBufferColor;
 #include "COM_MemoryBuffer.h"
 #include "COM_Sampler.h"
 
-class MemoryBufferColor: MemoryBuffer
+class MemoryBufferColor: public MemoryBuffer
 {
 private:
        SamplerNearestColor *m_sampler_nearest;
diff --git a/source/blender/compositor/intern/COM_MemoryBufferValue.cpp 
b/source/blender/compositor/intern/COM_MemoryBufferValue.cpp
index 8672f11..c9c71f5 100644
--- a/source/blender/compositor/intern/COM_MemoryBufferValue.cpp
+++ b/source/blender/compositor/intern/COM_MemoryBufferValue.cpp
@@ -122,3 +122,23 @@ float MemoryBufferValue::getMaximumValue() const
 
        return result;
 }
+
+float MemoryBufferValue::getMaximumValue(rcti *rect)
+{
+       rcti rect_clamp;
+
+       /* first clamp the rect by the bounds or we get un-initialized values */
+       BLI_rcti_isect(rect, &this->m_rect, &rect_clamp);
+
+       if (!BLI_rcti_is_empty(&rect_clamp)) {
+               MemoryBuffer *temp = MemoryBuffer::create(COM_DT_VALUE, 
&rect_clamp);
+               temp->copyContentFrom(this);
+               float result = temp->getMaximumValue();
+               delete temp;
+               return result;
+       }
+       else {
+               BLI_assert(0);
+               return 0.0f;
+       }
+}
diff --git a/source/blender/compositor/intern/COM_MemoryBufferValue.h 
b/source/blender/compositor/intern/COM_MemoryBufferValue.h
index ef9ab3d..75e4b15 100644
--- a/source/blender/compositor/intern/COM_MemoryBufferValue.h
+++ b/source/blender/compositor/intern/COM_MemoryBufferValue.h
@@ -70,8 +70,10 @@ public:
        SamplerBilinearValue* get_sampler_bilinear() {return 
this->m_sampler_bilinear;}
 
        float getMaximumValue() const;
+       float getMaximumValue(rcti *rect);
        MemoryBuffer *duplicate();
 
+
        friend class MemoryBuffer;
        
 #ifdef WITH_CXX_GUARDEDALLOC
diff --git a/source/blender/compositor/operations/COM_BokehBlurOperation.cpp 
b/source/blender/compositor/operations/COM_BokehBlurOperation.cpp
index 58785de..7156c3c 100644
--- a/source/blender/compositor/operations/COM_BokehBlurOperation.cpp
+++ b/source/blender/compositor/operations/COM_BokehBlurOperation.cpp
@@ -63,7 +63,6 @@ void BokehBlurOperation::initExecution()
        this->m_inputBokehProgram = getInputSocketReader(1);
        this->m_inputBoundingBoxReader = getInputSocketReader(2);
 
-
        this->m_bokeh_sampler = 
((ReadBufferOperation*)getInputOperation(1))->get_sampler_nearest_color();
        this->m_boundingbox_sampler = 
((ReadBufferOperation*)getInputOperation(2))->get_sampler_nearest_value();
 
diff --git 
a/source/blender/compositor/operations/COM_VariableSizeBokehBlurOperation.cpp 
b/source/blender/compositor/operations/COM_VariableSizeBokehBlurOperation.cpp
index 5ef9ddc..26cff6a 100644
--- 
a/source/blender/compositor/operations/COM_VariableSizeBokehBlurOperation.cpp
+++ 
b/source/blender/compositor/operations/COM_VariableSizeBokehBlurOperation.cpp
@@ -64,18 +64,18 @@ void VariableSizeBokehBlurOperation::initExecution()
 }
 struct VariableSizeBokehBlurTileData
 {
-       MemoryBuffer *color;
-       MemoryBuffer *bokeh;
-       MemoryBuffer *size;
+       MemoryBufferColor *color;
+       MemoryBufferColor *bokeh;
+       MemoryBufferValue *size;
        int maxBlurScalar;
 };
 
 void *VariableSizeBokehBlurOperation::initializeTileData(rcti *rect)
 {
        VariableSizeBokehBlurTileData *data = new 
VariableSizeBokehBlurTileData();
-       data->color = (MemoryBuffer 
*)this->m_inputProgram->initializeTileData(rect);
-       data->bokeh = (MemoryBuffer 
*)this->m_inputBokehProgram->initializeTileData(rect);
-       data->size = (MemoryBuffer 
*)this->m_inputSizeProgram->initializeTileData(rect);
+       data->color = (MemoryBufferColor 
*)this->m_inputProgram->initializeTileData(rect);
+       data->bokeh = (MemoryBufferColor 
*)this->m_inputBokehProgram->initializeTileData(rect);
+       data->size = (MemoryBufferValue 
*)this->m_inputSizeProgram->initializeTileData(rect);
 
 
        rcti rect2;
@@ -98,9 +98,11 @@ void 
VariableSizeBokehBlurOperation::deinitializeTileData(rcti *rect, void *data
 void VariableSizeBokehBlurOperation::executePixel(float output[4], int x, int 
y, void *data)
 {
        VariableSizeBokehBlurTileData *tileData = 
(VariableSizeBokehBlurTileData *)data;
-       MemoryBuffer *inputProgramBuffer = tileData->color;
-       MemoryBuffer *inputBokehBuffer = tileData->bokeh;
-       MemoryBuffer *inputSizeBuffer = tileData->size;
+       MemoryBufferColor *inputProgramBuffer = tileData->color;
+       MemoryBufferColor *inputBokehBuffer = tileData->bokeh;
+       MemoryBufferValue *inputSizeBuffer = tileData->size;
+       SamplerNearestNoCheckColor *bokeh_sampler = 
inputBokehBuffer->get_sampler_nocheck();
+       SamplerNearestNoCheckValue *size_sampler = 
inputSizeBuffer->get_sampler_nocheck();
        float *inputSizeFloatBuffer = inputSizeBuffer->getBuffer();
        float *inputProgramFloatBuffer = inputProgramBuffer->getBuffer();
        float readColor[4];
@@ -130,7 +132,7 @@ void VariableSizeBokehBlurOperation::executePixel(float 
output[4], int x, int y,
        int maxy = min(y + maxBlurScalar, (int)m_height);
 #endif
        {
-               inputSizeBuffer->readNoCheck(tempSize, x, y);
+               size_sampler->read(tempSize, x, y);
                inputProgramBuffer->readNoCheck(readColor, x, y);
 
                copy_v4_v4(color_accum, readColor);
@@ -156,7 +158,7 @@ void VariableSizeBokehBlurOperation::executePixel(float 
output[4], int x, int y,
                                                                float uv[2] = {
                                                                        
(float)(COM_BLUR_BOKEH_PIXELS / 2) + (dx / size) * 
(float)((COM_BLUR_BOKEH_PIXELS / 2) - 1),
                                                                        
(float)(COM_BLUR_BOKEH_PIXELS / 2) + (dy / size) * 
(float)((COM_BLUR_BOKEH_PIXELS / 2) - 1)};
-                                                               
inputBokehBuffer->readNoCheck(bokeh, uv[0], uv[1]);
+                                                               
bokeh_sampler->read(bokeh, uv[0], uv[1]);
                                                                
madd_v4_v4v4(color_accum, bokeh, &inputProgramFloatBuffer[offsetColorNxNy]);
                                                                
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