diff options
Diffstat (limited to 'source/blender/compositor/operations/COM_ConvolutionEdgeFilterOperation.cpp')
-rw-r--r-- | source/blender/compositor/operations/COM_ConvolutionEdgeFilterOperation.cpp | 71 |
1 files changed, 33 insertions, 38 deletions
diff --git a/source/blender/compositor/operations/COM_ConvolutionEdgeFilterOperation.cpp b/source/blender/compositor/operations/COM_ConvolutionEdgeFilterOperation.cpp index db67412f3e7..5ac8c2254dc 100644 --- a/source/blender/compositor/operations/COM_ConvolutionEdgeFilterOperation.cpp +++ b/source/blender/compositor/operations/COM_ConvolutionEdgeFilterOperation.cpp @@ -25,17 +25,12 @@ ConvolutionEdgeFilterOperation::ConvolutionEdgeFilterOperation() : ConvolutionFilterOperation() { -} -inline void addFilter(float *result, float*input, float value) -{ - result[0] += input[0] * value; - result[1] += input[1] * value; - result[2] += input[2] * value; + /* pass */ } -void ConvolutionEdgeFilterOperation::executePixel(float *color,int x, int y, MemoryBuffer *inputBuffers[], void *data) +void ConvolutionEdgeFilterOperation::executePixel(float *color, int x, int y, MemoryBuffer *inputBuffers[], void *data) { - float in1[4],in2[4], res1[4], res2[4]; + float in1[4], in2[4], res1[4], res2[4]; int x1 = x - 1; int x2 = x; @@ -43,12 +38,12 @@ void ConvolutionEdgeFilterOperation::executePixel(float *color,int x, int y, Mem int y1 = y - 1; int y2 = y; int y3 = y + 1; - CLAMP(x1, 0, getWidth()-1); - CLAMP(x2, 0, getWidth()-1); - CLAMP(x3, 0, getWidth()-1); - CLAMP(y1, 0, getHeight()-1); - CLAMP(y2, 0, getHeight()-1); - CLAMP(y3, 0, getHeight()-1); + CLAMP(x1, 0, getWidth() - 1); + CLAMP(x2, 0, getWidth() - 1); + CLAMP(x3, 0, getWidth() - 1); + CLAMP(y1, 0, getHeight() - 1); + CLAMP(y2, 0, getHeight() - 1); + CLAMP(y3, 0, getHeight() - 1); float value[4]; this->inputValueOperation->read(value, x2, y2, inputBuffers, NULL); @@ -64,48 +59,48 @@ void ConvolutionEdgeFilterOperation::executePixel(float *color,int x, int y, Mem res2[3] = 0.0f; this->inputOperation->read(in1, x1, y1, inputBuffers, NULL); - addFilter(res1, in1, this->filter[0]); - addFilter(res2, in1, this->filter[0]); + madd_v3_v3fl(res1, in1, this->filter[0]); + madd_v3_v3fl(res2, in1, this->filter[0]); this->inputOperation->read(in1, x2, y1, inputBuffers, NULL); - addFilter(res1, in1, this->filter[1]); - addFilter(res2, in1, this->filter[3]); + madd_v3_v3fl(res1, in1, this->filter[1]); + madd_v3_v3fl(res2, in1, this->filter[3]); this->inputOperation->read(in1, x3, y1, inputBuffers, NULL); - addFilter(res1, in1, this->filter[2]); - addFilter(res2, in1, this->filter[6]); + madd_v3_v3fl(res1, in1, this->filter[2]); + madd_v3_v3fl(res2, in1, this->filter[6]); this->inputOperation->read(in1, x1, y2, inputBuffers, NULL); - addFilter(res1, in1, this->filter[3]); - addFilter(res2, in1, this->filter[1]); + madd_v3_v3fl(res1, in1, this->filter[3]); + madd_v3_v3fl(res2, in1, this->filter[1]); this->inputOperation->read(in2, x2, y2, inputBuffers, NULL); - addFilter(res1, in2, this->filter[4]); - addFilter(res2, in2, this->filter[4]); + madd_v3_v3fl(res1, in2, this->filter[4]); + madd_v3_v3fl(res2, in2, this->filter[4]); this->inputOperation->read(in1, x3, y2, inputBuffers, NULL); - addFilter(res1, in1, this->filter[5]); - addFilter(res2, in1, this->filter[7]); + madd_v3_v3fl(res1, in1, this->filter[5]); + madd_v3_v3fl(res2, in1, this->filter[7]); this->inputOperation->read(in1, x1, y3, inputBuffers, NULL); - addFilter(res1, in1, this->filter[6]); - addFilter(res2, in1, this->filter[2]); + madd_v3_v3fl(res1, in1, this->filter[6]); + madd_v3_v3fl(res2, in1, this->filter[2]); this->inputOperation->read(in1, x2, y3, inputBuffers, NULL); - addFilter(res1, in1, this->filter[7]); - addFilter(res2, in1, this->filter[5]); + madd_v3_v3fl(res1, in1, this->filter[7]); + madd_v3_v3fl(res2, in1, this->filter[5]); this->inputOperation->read(in1, x3, y3, inputBuffers, NULL); - addFilter(res1, in1, this->filter[8]); - addFilter(res2, in1, this->filter[8]); + madd_v3_v3fl(res1, in1, this->filter[8]); + madd_v3_v3fl(res2, in1, this->filter[8]); - color[0] = sqrt(res1[0]*res1[0]+res2[0]*res2[0]); - color[1] = sqrt(res1[1]*res1[1]+res2[1]*res2[1]); - color[2] = sqrt(res1[2]*res1[2]+res2[2]*res2[2]); + color[0] = sqrt(res1[0] * res1[0] + res2[0] * res2[0]); + color[1] = sqrt(res1[1] * res1[1] + res2[1] * res2[1]); + color[2] = sqrt(res1[2] * res1[2] + res2[2] * res2[2]); - color[0] = color[0]*value[0] + in2[0] * mval; - color[1] = color[1]*value[0] + in2[1] * mval; - color[2] = color[2]*value[0] + in2[2] * mval; + color[0] = color[0] * value[0] + in2[0] * mval; + color[1] = color[1] * value[0] + in2[1] * mval; + color[2] = color[2] * value[0] + in2[2] * mval; color[3] = in2[3]; } |