Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <j.bakker@atmind.nl>2012-06-13 16:34:56 +0400
committerJeroen Bakker <j.bakker@atmind.nl>2012-06-13 16:34:56 +0400
commitbe1b5f82cee09041fdee355697841ee92b31ef70 (patch)
tree7032f52aaffb862c228d92a476dc9a0e00261ef1 /source/blender/compositor/operations/COM_GlareSimpleStarOperation.cpp
parent4ba456d1754c29b488b8304c8546af45078e8536 (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.cpp14
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;
+ }
}
}