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:
Diffstat (limited to 'source/blender/compositor/operations/COM_NormalizeOperation.cpp')
-rw-r--r--source/blender/compositor/operations/COM_NormalizeOperation.cpp33
1 files changed, 19 insertions, 14 deletions
diff --git a/source/blender/compositor/operations/COM_NormalizeOperation.cpp b/source/blender/compositor/operations/COM_NormalizeOperation.cpp
index 6d12141a455..8a83ef7f3ae 100644
--- a/source/blender/compositor/operations/COM_NormalizeOperation.cpp
+++ b/source/blender/compositor/operations/COM_NormalizeOperation.cpp
@@ -25,13 +25,13 @@ NormalizeOperation::NormalizeOperation() : NodeOperation()
{
this->addInputSocket(COM_DT_VALUE);
this->addOutputSocket(COM_DT_VALUE);
- this->imageReader = NULL;
- this->cachedInstance = NULL;
+ this->m_imageReader = NULL;
+ this->m_cachedInstance = NULL;
this->setComplex(true);
}
void NormalizeOperation::initExecution()
{
- this->imageReader = this->getInputSocketReader(0);
+ this->m_imageReader = this->getInputSocketReader(0);
NodeOperation::initMutex();
}
@@ -41,16 +41,16 @@ void NormalizeOperation::executePixel(float *color, int x, int y, MemoryBuffer *
NodeTwoFloats *minmult = (NodeTwoFloats *)data;
float output[4];
- this->imageReader->read(output, x, y, inputBuffers, NULL);
+ this->m_imageReader->read(output, x, y, inputBuffers, NULL);
color[0] = (output[0] - minmult->x) * minmult->y;
}
void NormalizeOperation::deinitExecution()
{
- this->imageReader = NULL;
- if (this->cachedInstance) {
- delete cachedInstance;
+ this->m_imageReader = NULL;
+ if (this->m_cachedInstance) {
+ delete this->m_cachedInstance;
}
NodeOperation::deinitMutex();
}
@@ -58,7 +58,8 @@ void NormalizeOperation::deinitExecution()
bool NormalizeOperation::determineDependingAreaOfInterest(rcti *input, ReadBufferOperation *readOperation, rcti *output)
{
rcti imageInput;
-
+ if (this->m_cachedInstance) return false;
+
NodeOperation *operation = getInputOperation(0);
imageInput.xmax = operation->getWidth();
imageInput.xmin = 0;
@@ -77,8 +78,8 @@ bool NormalizeOperation::determineDependingAreaOfInterest(rcti *input, ReadBuffe
void *NormalizeOperation::initializeTileData(rcti *rect, MemoryBuffer **memoryBuffers)
{
lockMutex();
- if (this->cachedInstance == NULL) {
- MemoryBuffer *tile = (MemoryBuffer *)imageReader->initializeTileData(rect, memoryBuffers);
+ if (this->m_cachedInstance == NULL) {
+ MemoryBuffer *tile = (MemoryBuffer *)this->m_imageReader->initializeTileData(rect, memoryBuffers);
/* using generic two floats struct to store x: min y: mult */
NodeTwoFloats *minmult = new NodeTwoFloats();
@@ -92,8 +93,12 @@ void *NormalizeOperation::initializeTileData(rcti *rect, MemoryBuffer **memoryBu
float value;
while (p--) {
value = bc[0];
- maxv = max(value, maxv);
- minv = min(value, minv);
+ if ((value > maxv) && (value <= BLENDER_ZMAX)) {
+ maxv = value;
+ }
+ if ((value < minv) && (value >= -BLENDER_ZMAX)) {
+ minv = value;
+ }
bc += 4;
}
@@ -101,11 +106,11 @@ void *NormalizeOperation::initializeTileData(rcti *rect, MemoryBuffer **memoryBu
/* The rare case of flat buffer would cause a divide by 0 */
minmult->y = ((maxv != minv) ? 1.0f / (maxv - minv) : 0.f);
- this->cachedInstance = minmult;
+ this->m_cachedInstance = minmult;
}
unlockMutex();
- return this->cachedInstance;
+ return this->m_cachedInstance;
}
void NormalizeOperation::deinitializeTileData(rcti *rect, MemoryBuffer **memoryBuffers, void *data)