diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2012-07-13 16:50:10 +0400 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2012-07-13 16:50:10 +0400 |
commit | 6eacb5791df99f9204d0a478698158ef994d3e1d (patch) | |
tree | 664ce2e24d97428bee8ae9fa09050fec41eb20e0 /source/blender/compositor/operations | |
parent | 9987a8fca727d117b1d94587144d704be0b235dd (diff) |
Inner loop optimization of blur node
Diffstat (limited to 'source/blender/compositor/operations')
3 files changed, 6 insertions, 5 deletions
diff --git a/source/blender/compositor/operations/COM_GaussianBokehBlurOperation.cpp b/source/blender/compositor/operations/COM_GaussianBokehBlurOperation.cpp index d3c4ad96df0..93cc39849a2 100644 --- a/source/blender/compositor/operations/COM_GaussianBokehBlurOperation.cpp +++ b/source/blender/compositor/operations/COM_GaussianBokehBlurOperation.cpp @@ -138,8 +138,10 @@ void GaussianBokehBlurOperation::executePixel(float *color, int x, int y, void * int index; int step = QualityStepHelper::getStep(); int offsetadd = QualityStepHelper::getOffsetAdd(); + const int addConst = (minx - x + this->m_radx); + const int mulConst = (this->m_radx * 2 + 1); for (int ny = miny; ny < maxy; ny += step) { - index = ((ny - y) + this->m_rady) * (this->m_radx * 2 + 1) + (minx - x + this->m_radx); + index = ((ny - y) + this->m_rady) * mulConst + addConst; int bufferindex = ((minx - bufferstartx) * 4) + ((ny - bufferstarty) * 4 * bufferwidth); for (int nx = minx; nx < maxx; nx += step) { const float multiplier = this->m_gausstab[index]; diff --git a/source/blender/compositor/operations/COM_GaussianXBlurOperation.cpp b/source/blender/compositor/operations/COM_GaussianXBlurOperation.cpp index 1acd9f21b1a..1cf675a769a 100644 --- a/source/blender/compositor/operations/COM_GaussianXBlurOperation.cpp +++ b/source/blender/compositor/operations/COM_GaussianXBlurOperation.cpp @@ -92,12 +92,10 @@ void GaussianXBlurOperation::executePixel(float *color, int x, int y, void *data maxy = min(maxy, inputBuffer->getRect()->ymax); maxx = min(maxx, inputBuffer->getRect()->xmax); - int index; int step = getStep(); int offsetadd = getOffsetAdd(); int bufferindex = ((minx - bufferstartx) * 4) + ((miny - bufferstarty) * 4 * bufferwidth); - for (int nx = minx; nx < maxx; nx += step) { - index = (nx - x) + this->m_rad; + for (int nx = minx, index = (minx - x) + this->m_rad; nx < maxx; nx += step, index += step) { const float multiplier = this->m_gausstab[index]; madd_v4_v4fl(color_accum, &buffer[bufferindex], multiplier); multiplier_accum += multiplier; diff --git a/source/blender/compositor/operations/COM_GaussianYBlurOperation.cpp b/source/blender/compositor/operations/COM_GaussianYBlurOperation.cpp index 7ed455a1156..135dcf60872 100644 --- a/source/blender/compositor/operations/COM_GaussianYBlurOperation.cpp +++ b/source/blender/compositor/operations/COM_GaussianYBlurOperation.cpp @@ -94,9 +94,10 @@ void GaussianYBlurOperation::executePixel(float *color, int x, int y, void *data int index; int step = getStep(); + const int bufferIndexx = ((minx - bufferstartx) * 4) ; for (int ny = miny; ny < maxy; ny += step) { index = (ny - y) + this->m_rad; - int bufferindex = ((minx - bufferstartx) * 4) + ((ny - bufferstarty) * 4 * bufferwidth); + int bufferindex = bufferIndexx + ((ny - bufferstarty) * 4 * bufferwidth); const float multiplier = this->m_gausstab[index]; madd_v4_v4fl(color_accum, &buffer[bufferindex], multiplier); multiplier_accum += multiplier; |