diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2012-06-13 16:34:56 +0400 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2012-06-13 16:34:56 +0400 |
commit | be1b5f82cee09041fdee355697841ee92b31ef70 (patch) | |
tree | 7032f52aaffb862c228d92a476dc9a0e00261ef1 /source/blender/compositor/operations/COM_GlareSimpleStarOperation.cpp | |
parent | 4ba456d1754c29b488b8304c8546af45078e8536 (diff) |
* optimized threading
* break out with glare node
* Added OpenCL kernels compatible with AMD still need some testing.
Diffstat (limited to 'source/blender/compositor/operations/COM_GlareSimpleStarOperation.cpp')
-rw-r--r-- | source/blender/compositor/operations/COM_GlareSimpleStarOperation.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/source/blender/compositor/operations/COM_GlareSimpleStarOperation.cpp b/source/blender/compositor/operations/COM_GlareSimpleStarOperation.cpp index fba3eca4af9..4a393a33073 100644 --- a/source/blender/compositor/operations/COM_GlareSimpleStarOperation.cpp +++ b/source/blender/compositor/operations/COM_GlareSimpleStarOperation.cpp @@ -32,10 +32,11 @@ void GlareSimpleStarOperation::generateGlare(float *data, MemoryBuffer *inputTil MemoryBuffer *tbuf1 = inputTile->duplicate(); MemoryBuffer *tbuf2 = inputTile->duplicate(); - for (i=0; i<settings->iter; i++) { + bool breaked = false; + for (i=0; i<settings->iter && (!breaked); i++) { // // (x || x-1, y-1) to (x || x+1, y+1) // // F - for (y=0; y<this->getHeight(); y++) { + for (y=0; y<this->getHeight() && (!breaked); y++) { ym = y - i; yp = y + i; for (x=0; x<this->getWidth(); x++) { @@ -58,11 +59,13 @@ void GlareSimpleStarOperation::generateGlare(float *data, MemoryBuffer *inputTil madd_v3_v3fl(c, tc, f2); c[3] = 1.0f; tbuf2->writePixel(x, y, c); - + } + if (isBreaked()) { + breaked = true; } } // // B - for (y=tbuf1->getHeight()-1; y>=0; y--) { + for (y=tbuf1->getHeight()-1 && (!breaked); y>=0; y--) { ym = y - i; yp = y + i; for (x=tbuf1->getWidth()-1; x>=0; x--) { @@ -86,6 +89,9 @@ void GlareSimpleStarOperation::generateGlare(float *data, MemoryBuffer *inputTil c[3] = 1.0f; tbuf2->writePixel(x, y, c); } + if (isBreaked()) { + breaked = true; + } } } |