From a7831c74e6bb4fdee43ba65513ed06e631e05bfd Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 24 Aug 2012 12:48:56 +0000 Subject: fix for bug in variable size blur compositor node - using incorrect Y blur operations and uninitialized memory was causing random blur results. --- source/blender/compositor/nodes/COM_BlurNode.cpp | 6 +++++- source/blender/compositor/operations/COM_BlurBaseOperation.cpp | 5 +++++ .../compositor/operations/COM_GaussianAlphaXBlurOperation.cpp | 1 + .../compositor/operations/COM_GaussianAlphaYBlurOperation.cpp | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/source/blender/compositor/nodes/COM_BlurNode.cpp b/source/blender/compositor/nodes/COM_BlurNode.cpp index 93ef002c8d7..e39ef2b3f23 100644 --- a/source/blender/compositor/nodes/COM_BlurNode.cpp +++ b/source/blender/compositor/nodes/COM_BlurNode.cpp @@ -74,14 +74,18 @@ void BlurNode::convertToOperations(ExecutionSystem *graph, CompositorContext *co operationx->setbNode(editorNode); operationx->setQuality(quality); operationx->setSize(1.0f); + operationx->setFalloff(PROP_SMOOTH); + operationx->setSubtract(false); addLink(graph, clamp->getOutputSocket(), operationx->getInputSocket(0)); graph->addOperation(operationx); - GaussianYBlurOperation *operationy = new GaussianYBlurOperation(); + GaussianAlphaYBlurOperation *operationy = new GaussianAlphaYBlurOperation(); operationy->setData(data); operationy->setbNode(editorNode); operationy->setQuality(quality); operationy->setSize(1.0f); + operationy->setFalloff(PROP_SMOOTH); + operationy->setSubtract(false); addLink(graph, operationx->getOutputSocket(), operationy->getInputSocket(0)); graph->addOperation(operationy); diff --git a/source/blender/compositor/operations/COM_BlurBaseOperation.cpp b/source/blender/compositor/operations/COM_BlurBaseOperation.cpp index c527807f839..39a0014ac41 100644 --- a/source/blender/compositor/operations/COM_BlurBaseOperation.cpp +++ b/source/blender/compositor/operations/COM_BlurBaseOperation.cpp @@ -121,6 +121,11 @@ float *BlurBaseOperation::make_dist_fac_inverse(int rad, int falloff) val = val * val; break; case PROP_LIN: +#ifndef NDEBUG + /* uninitialized! */ + case -1: + BLI_assert(0); +#endif default: /* nothing */ break; diff --git a/source/blender/compositor/operations/COM_GaussianAlphaXBlurOperation.cpp b/source/blender/compositor/operations/COM_GaussianAlphaXBlurOperation.cpp index 82f38556e82..8c5e5faf12a 100644 --- a/source/blender/compositor/operations/COM_GaussianAlphaXBlurOperation.cpp +++ b/source/blender/compositor/operations/COM_GaussianAlphaXBlurOperation.cpp @@ -33,6 +33,7 @@ GaussianAlphaXBlurOperation::GaussianAlphaXBlurOperation() : BlurBaseOperation(C { this->m_gausstab = NULL; this->m_rad = 0; + this->m_falloff = -1; /* intentionally invalid, so we can detect uninitialized values */ } void *GaussianAlphaXBlurOperation::initializeTileData(rcti *rect) diff --git a/source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp b/source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp index bfd9564817e..197715595ed 100644 --- a/source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp +++ b/source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp @@ -33,6 +33,7 @@ GaussianAlphaYBlurOperation::GaussianAlphaYBlurOperation() : BlurBaseOperation(C { this->m_gausstab = NULL; this->m_rad = 0; + this->m_falloff = -1; /* intentionally invalid, so we can detect uninitialized values */ } void *GaussianAlphaYBlurOperation::initializeTileData(rcti *rect) -- cgit v1.2.3