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/nodes/COM_BlurNode.cpp')
-rw-r--r--source/blender/compositor/nodes/COM_BlurNode.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/source/blender/compositor/nodes/COM_BlurNode.cpp b/source/blender/compositor/nodes/COM_BlurNode.cpp
index 5447652c238..9b945887ec2 100644
--- a/source/blender/compositor/nodes/COM_BlurNode.cpp
+++ b/source/blender/compositor/nodes/COM_BlurNode.cpp
@@ -25,9 +25,13 @@
#include "DNA_node_types.h"
#include "COM_GaussianXBlurOperation.h"
#include "COM_GaussianYBlurOperation.h"
+#include "COM_GaussianAlphaXBlurOperation.h"
+#include "COM_GaussianAlphaYBlurOperation.h"
#include "COM_ExecutionSystem.h"
#include "COM_GaussianBokehBlurOperation.h"
#include "COM_FastGaussianBlurOperation.h"
+#include "COM_MathBaseOperation.h"
+#include "COM_SetValueOperation.h"
BlurNode::BlurNode(bNode *editorNode) : Node(editorNode)
{
@@ -56,6 +60,42 @@ void BlurNode::convertToOperations(ExecutionSystem *graph, CompositorContext *co
graph->addOperation(operationfgb);
addPreviewOperation(graph, operationfgb->getOutputSocket());
}
+ else if (editorNode->custom1 & CMP_NODEFLAG_BLUR_REFERENCE) {
+ MathAddOperation *clamp = new MathAddOperation();
+ SetValueOperation *zero = new SetValueOperation();
+ addLink(graph, zero->getOutputSocket(), clamp->getInputSocket(1));
+ this->getInputSocket(1)->relinkConnections(clamp->getInputSocket(0), 1, graph);
+ zero->setValue(0.0f);
+ clamp->setUseClamp(true);
+ graph->addOperation(clamp);
+ graph->addOperation(zero);
+
+ GaussianAlphaXBlurOperation *operationx = new GaussianAlphaXBlurOperation();
+ operationx->setData(data);
+ operationx->setbNode(editorNode);
+ operationx->setQuality(quality);
+ operationx->setSize(1.0f);
+ addLink(graph, clamp->getOutputSocket(), operationx->getInputSocket(0));
+ graph->addOperation(operationx);
+
+ GaussianYBlurOperation *operationy = new GaussianYBlurOperation();
+ operationy->setData(data);
+ operationy->setbNode(editorNode);
+ operationy->setQuality(quality);
+ operationy->setSize(1.0f);
+ addLink(graph, operationx->getOutputSocket(), operationy->getInputSocket(0));
+ graph->addOperation(operationy);
+
+ GaussianBlurReferenceOperation *operation = new GaussianBlurReferenceOperation();
+ operation->setData(data);
+ operation->setbNode(editorNode);
+ operation->setQuality(quality);
+ this->getInputSocket(0)->relinkConnections(operation->getInputSocket(0), 0, graph);
+ addLink(graph, operationy->getOutputSocket(), operation->getInputSocket(1));
+ graph->addOperation(operation);
+ this->getOutputSocket(0)->relinkConnections(operation->getOutputSocket());
+ addPreviewOperation(graph, operation->getOutputSocket());
+ }
else if (!data->bokeh) {
GaussianXBlurOperation *operationx = new GaussianXBlurOperation();
operationx->setData(data);