diff options
Diffstat (limited to 'source/blender/compositor/nodes')
51 files changed, 217 insertions, 142 deletions
diff --git a/source/blender/compositor/nodes/COM_AlphaOverNode.h b/source/blender/compositor/nodes/COM_AlphaOverNode.h index f7375d9a7c5..e25e9e11975 100644 --- a/source/blender/compositor/nodes/COM_AlphaOverNode.h +++ b/source/blender/compositor/nodes/COM_AlphaOverNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_AlphaOverNode_h -#define _COM_AlphaOverNode_h +#ifndef _COM_AlphaOverNode_h_ +#define _COM_AlphaOverNode_h_ #include "COM_Node.h" diff --git a/source/blender/compositor/nodes/COM_BlurNode.h b/source/blender/compositor/nodes/COM_BlurNode.h index e7daff1c414..95b0516dae0 100644 --- a/source/blender/compositor/nodes/COM_BlurNode.h +++ b/source/blender/compositor/nodes/COM_BlurNode.h @@ -29,7 +29,6 @@ * @brief BlurNode * @ingroup Node */ - class BlurNode : public Node { public: BlurNode(bNode *editorNode); diff --git a/source/blender/compositor/nodes/COM_BokehBlurNode.h b/source/blender/compositor/nodes/COM_BokehBlurNode.h index 5ce75a7d42b..c2bc7552ac0 100644 --- a/source/blender/compositor/nodes/COM_BokehBlurNode.h +++ b/source/blender/compositor/nodes/COM_BokehBlurNode.h @@ -29,7 +29,6 @@ * @brief BokehBlurNode * @ingroup Node */ - class BokehBlurNode : public Node { public: BokehBlurNode(bNode *editorNode); diff --git a/source/blender/compositor/nodes/COM_ChannelMatteNode.h b/source/blender/compositor/nodes/COM_ChannelMatteNode.h index 45d03e18a6a..4efb06c9f87 100644 --- a/source/blender/compositor/nodes/COM_ChannelMatteNode.h +++ b/source/blender/compositor/nodes/COM_ChannelMatteNode.h @@ -19,8 +19,8 @@ * Dalai Felinto */ -#ifndef COM_ChannelMatteNODE_H -#define COM_ChannelMatteNODE_H +#ifndef _COM_ChannelMatteNode_h_ +#define _COM_ChannelMatteNode_h_ #include "COM_Node.h" @@ -28,8 +28,7 @@ * @brief ChannelMatteNode * @ingroup Node */ -class ChannelMatteNode : public Node -{ +class ChannelMatteNode : public Node { public: ChannelMatteNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); diff --git a/source/blender/compositor/nodes/COM_ChromaMatteNode.h b/source/blender/compositor/nodes/COM_ChromaMatteNode.h index ed8250b0329..ddd350aab40 100644 --- a/source/blender/compositor/nodes/COM_ChromaMatteNode.h +++ b/source/blender/compositor/nodes/COM_ChromaMatteNode.h @@ -19,8 +19,8 @@ * Dalai Felinto */ -#ifndef COM_ChromaMatteNODE_H -#define COM_ChromaMatteNODE_H +#ifndef _COM_ChromaMatteNode_h_ +#define _COM_ChromaMatteNode_h_ #include "COM_Node.h" @@ -28,8 +28,7 @@ * @brief ChromaMatteNode * @ingroup Node */ -class ChromaMatteNode : public Node -{ +class ChromaMatteNode : public Node { public: ChromaMatteNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); diff --git a/source/blender/compositor/nodes/COM_ColorBalanceNode.h b/source/blender/compositor/nodes/COM_ColorBalanceNode.h index c2bdc306e20..cdad02fc831 100644 --- a/source/blender/compositor/nodes/COM_ColorBalanceNode.h +++ b/source/blender/compositor/nodes/COM_ColorBalanceNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef COM_ColorBalanceNODE_H -#define COM_ColorBalanceNODE_H +#ifndef _COM_ColorBalanceNode_h_ +#define _COM_ColorBalanceNode_h_ #include "COM_Node.h" @@ -29,8 +29,7 @@ * @brief ColorBalanceNode * @ingroup Node */ -class ColorBalanceNode : public Node -{ +class ColorBalanceNode : public Node { public: ColorBalanceNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); diff --git a/source/blender/compositor/nodes/COM_ColorMatteNode.h b/source/blender/compositor/nodes/COM_ColorMatteNode.h index 375c914a122..92a4fa79408 100644 --- a/source/blender/compositor/nodes/COM_ColorMatteNode.h +++ b/source/blender/compositor/nodes/COM_ColorMatteNode.h @@ -19,8 +19,8 @@ * Dalai Felinto */ -#ifndef COM_ColorMatteNODE_H -#define COM_ColorMatteNODE_H +#ifndef _COM_ColorMatteNode_h_ +#define _COM_ColorMatteNode_h_ #include "COM_Node.h" @@ -28,8 +28,7 @@ * @brief ColorMatteNode * @ingroup Node */ -class ColorMatteNode : public Node -{ +class ColorMatteNode : public Node { public: ColorMatteNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); diff --git a/source/blender/compositor/nodes/COM_ColorRampNode.h b/source/blender/compositor/nodes/COM_ColorRampNode.h index 4d706e126e1..6c256c09e68 100644 --- a/source/blender/compositor/nodes/COM_ColorRampNode.h +++ b/source/blender/compositor/nodes/COM_ColorRampNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef COM_ColorRampNODE_H -#define COM_ColorRampNODE_H +#ifndef _COM_ColorRampNode_h_ +#define _COM_ColorRampNode_h_ #include "COM_Node.h" @@ -29,8 +29,7 @@ * @brief ColorRampNode * @ingroup Node */ -class ColorRampNode : public Node -{ +class ColorRampNode : public Node { public: ColorRampNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); diff --git a/source/blender/compositor/nodes/COM_ColorSpillNode.h b/source/blender/compositor/nodes/COM_ColorSpillNode.h index d8ce6878fa0..1d976fc65ae 100644 --- a/source/blender/compositor/nodes/COM_ColorSpillNode.h +++ b/source/blender/compositor/nodes/COM_ColorSpillNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef COM_ColorSpillNODE_H -#define COM_ColorSpillNODE_H +#ifndef _COM_ColorSpillNode_h_ +#define _COM_ColorSpillNode_h_ #include "COM_Node.h" @@ -29,8 +29,7 @@ * @brief ColorSpillNode * @ingroup Node */ -class ColorSpillNode : public Node -{ +class ColorSpillNode : public Node { public: ColorSpillNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); diff --git a/source/blender/compositor/nodes/COM_ColorToBWNode.h b/source/blender/compositor/nodes/COM_ColorToBWNode.h index 34a157c73d8..9262634edda 100644 --- a/source/blender/compositor/nodes/COM_ColorToBWNode.h +++ b/source/blender/compositor/nodes/COM_ColorToBWNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_ColourToBWNode_h -#define _COM_ColourToBWNode_h +#ifndef _COM_ColourToBWNode_h_ +#define _COM_ColourToBWNode_h_ #include "COM_Node.h" #include "DNA_node_types.h" diff --git a/source/blender/compositor/nodes/COM_CombineHSVANode.h b/source/blender/compositor/nodes/COM_CombineHSVANode.h index d8aba71d456..95d3cf9ecdd 100644 --- a/source/blender/compositor/nodes/COM_CombineHSVANode.h +++ b/source/blender/compositor/nodes/COM_CombineHSVANode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_CombineHSVANode_h -#define _COM_CombineHSVANode_h +#ifndef _COM_CombineHSVANode_h_ +#define _COM_CombineHSVANode_h_ #include "COM_Node.h" #include "DNA_node_types.h" diff --git a/source/blender/compositor/nodes/COM_CombineRGBANode.h b/source/blender/compositor/nodes/COM_CombineRGBANode.h index 1f25d8deed9..5cc0b1ea6da 100644 --- a/source/blender/compositor/nodes/COM_CombineRGBANode.h +++ b/source/blender/compositor/nodes/COM_CombineRGBANode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_CombineRGBANode_h -#define _COM_CombineRGBANode_h +#ifndef _COM_CombineRGBANode_h_ +#define _COM_CombineRGBANode_h_ #include "COM_Node.h" #include "DNA_node_types.h" diff --git a/source/blender/compositor/nodes/COM_CombineYCCANode.h b/source/blender/compositor/nodes/COM_CombineYCCANode.h index 3b143aabc7f..6ff2938c161 100644 --- a/source/blender/compositor/nodes/COM_CombineYCCANode.h +++ b/source/blender/compositor/nodes/COM_CombineYCCANode.h @@ -19,8 +19,8 @@ * Dalai Felinto */ -#ifndef _COM_CombineYCCANode_h -#define _COM_CombineYCCANode_h +#ifndef _COM_CombineYCCANode_h_ +#define _COM_CombineYCCANode_h_ #include "COM_Node.h" #include "DNA_node_types.h" diff --git a/source/blender/compositor/nodes/COM_CombineYUVANode.h b/source/blender/compositor/nodes/COM_CombineYUVANode.h index 1eae44c83a5..e3d8f36a5dd 100644 --- a/source/blender/compositor/nodes/COM_CombineYUVANode.h +++ b/source/blender/compositor/nodes/COM_CombineYUVANode.h @@ -19,8 +19,8 @@ * Dalai Felinto */ -#ifndef _COM_CombineYUVANode_h -#define _COM_CombineYUVANode_h +#ifndef _COM_CombineYUVANode_h_ +#define _COM_CombineYUVANode_h_ #include "COM_Node.h" #include "DNA_node_types.h" diff --git a/source/blender/compositor/nodes/COM_CompositorNode.h b/source/blender/compositor/nodes/COM_CompositorNode.h index 585dae7761e..54d52d7db9e 100644 --- a/source/blender/compositor/nodes/COM_CompositorNode.h +++ b/source/blender/compositor/nodes/COM_CompositorNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_CompositorNode_h -#define _COM_CompositorNode_h +#ifndef _COM_CompositorNode_h_ +#define _COM_CompositorNode_h_ #include "COM_Node.h" #include "DNA_node_types.h" diff --git a/source/blender/compositor/nodes/COM_ConvertAlphaNode.h b/source/blender/compositor/nodes/COM_ConvertAlphaNode.h index d9077c23a02..a80f8de1607 100644 --- a/source/blender/compositor/nodes/COM_ConvertAlphaNode.h +++ b/source/blender/compositor/nodes/COM_ConvertAlphaNode.h @@ -19,8 +19,8 @@ * Dalai Felinto */ -#ifndef _COM_ConvertAlphaNode_h -#define _COM_ConvertAlphaNode_h +#ifndef _COM_ConvertAlphaNode_h_ +#define _COM_ConvertAlphaNode_h_ #include "COM_Node.h" diff --git a/source/blender/compositor/nodes/COM_CropNode.h b/source/blender/compositor/nodes/COM_CropNode.h index 44fdeecc180..1003728a9d4 100644 --- a/source/blender/compositor/nodes/COM_CropNode.h +++ b/source/blender/compositor/nodes/COM_CropNode.h @@ -25,6 +25,10 @@ #include "COM_Node.h" +/** + * @brief CropNode + * @ingroup Node + */ class CropNode : public Node { public: CropNode(bNode *editorNode); diff --git a/source/blender/compositor/nodes/COM_DefocusNode.h b/source/blender/compositor/nodes/COM_DefocusNode.h index a3cffbd98c4..7d69b6413bb 100644 --- a/source/blender/compositor/nodes/COM_DefocusNode.h +++ b/source/blender/compositor/nodes/COM_DefocusNode.h @@ -29,7 +29,6 @@ * @brief DefocusNode * @ingroup Node */ - class DefocusNode : public Node { public: DefocusNode(bNode *editorNode); diff --git a/source/blender/compositor/nodes/COM_DifferenceMatteNode.h b/source/blender/compositor/nodes/COM_DifferenceMatteNode.h index faaf235bf34..191b7361c3c 100644 --- a/source/blender/compositor/nodes/COM_DifferenceMatteNode.h +++ b/source/blender/compositor/nodes/COM_DifferenceMatteNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef COM_DifferenceMatteNODE_H -#define COM_DifferenceMatteNODE_H +#ifndef _COM_DifferenceMatteNode_h_ +#define _COM_DifferenceMatteNode_h_ #include "COM_Node.h" @@ -29,8 +29,7 @@ * @brief DifferenceMatteNode * @ingroup Node */ -class DifferenceMatteNode : public Node -{ +class DifferenceMatteNode : public Node { public: DifferenceMatteNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); diff --git a/source/blender/compositor/nodes/COM_DilateErodeNode.cpp b/source/blender/compositor/nodes/COM_DilateErodeNode.cpp index 285bfa0470e..3f4e3736bbe 100644 --- a/source/blender/compositor/nodes/COM_DilateErodeNode.cpp +++ b/source/blender/compositor/nodes/COM_DilateErodeNode.cpp @@ -77,7 +77,7 @@ void DilateErodeNode::convertToOperations(ExecutionSystem *graph, CompositorCont CompositorQuality quality = context->getQuality(); /* initialize node data */ - NodeBlurData *data = (NodeBlurData *)&this->alpha_blur; + NodeBlurData *data = (NodeBlurData *)&this->m_alpha_blur; memset(data, 0, sizeof(*data)); data->filtertype = R_FILTER_GAUSS; @@ -119,9 +119,9 @@ void DilateErodeNode::convertToOperations(ExecutionSystem *graph, CompositorCont operationy->setSubtract(editorNode->custom2 < 0); if (editorNode->storage) { - NodeDilateErode *data = (NodeDilateErode *)editorNode->storage; - operationx->setFalloff(data->falloff); - operationy->setFalloff(data->falloff); + NodeDilateErode *data_storage = (NodeDilateErode *)editorNode->storage; + operationx->setFalloff(data_storage->falloff); + operationy->setFalloff(data_storage->falloff); } } else { diff --git a/source/blender/compositor/nodes/COM_DilateErodeNode.h b/source/blender/compositor/nodes/COM_DilateErodeNode.h index ac374d7375b..4b02042ffc9 100644 --- a/source/blender/compositor/nodes/COM_DilateErodeNode.h +++ b/source/blender/compositor/nodes/COM_DilateErodeNode.h @@ -30,7 +30,7 @@ * @ingroup Node */ class DilateErodeNode : public Node { - NodeBlurData alpha_blur; /* only used for blurring alpha, since the dilate/erode node doesnt have this */ + NodeBlurData m_alpha_blur; /* only used for blurring alpha, since the dilate/erode node doesnt have this */ public: DilateErodeNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); diff --git a/source/blender/compositor/nodes/COM_DisplaceNode.h b/source/blender/compositor/nodes/COM_DisplaceNode.h index ecbe07b06b9..af6afc25366 100644 --- a/source/blender/compositor/nodes/COM_DisplaceNode.h +++ b/source/blender/compositor/nodes/COM_DisplaceNode.h @@ -19,8 +19,8 @@ * Dalai Felinto */ -#ifndef _COM_DisplaceNode_h -#define _COM_DisplaceNode_h +#ifndef _COM_DisplaceNode_h_ +#define _COM_DisplaceNode_h_ #include "COM_Node.h" diff --git a/source/blender/compositor/nodes/COM_DistanceMatteNode.h b/source/blender/compositor/nodes/COM_DistanceMatteNode.h index 42582ef10a0..4e6682424e8 100644 --- a/source/blender/compositor/nodes/COM_DistanceMatteNode.h +++ b/source/blender/compositor/nodes/COM_DistanceMatteNode.h @@ -19,8 +19,8 @@ * Dalai Felinto */ -#ifndef COM_DistanceMatteNODE_H -#define COM_DistanceMatteNODE_H +#ifndef _COM_DistanceMatteNode_h_ +#define _COM_DistanceMatteNode_h_ #include "COM_Node.h" @@ -28,8 +28,7 @@ * @brief DistanceMatteNode * @ingroup Node */ -class DistanceMatteNode : public Node -{ +class DistanceMatteNode : public Node { public: DistanceMatteNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); diff --git a/source/blender/compositor/nodes/COM_FilterNode.h b/source/blender/compositor/nodes/COM_FilterNode.h index 17f590b9cfc..d65166944d8 100644 --- a/source/blender/compositor/nodes/COM_FilterNode.h +++ b/source/blender/compositor/nodes/COM_FilterNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef COM_FILTERNODE_H -#define COM_FILTERNODE_H +#ifndef _COM_FilterNode_h_ +#define _COM_FilterNode_h_ #include "COM_Node.h" @@ -29,11 +29,10 @@ * @brief FilterNode * @ingroup Node */ -class FilterNode : public Node -{ +class FilterNode : public Node { public: FilterNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); }; -#endif // COM_FILTERNODE_H +#endif // _COM_FilterNode_h_ diff --git a/source/blender/compositor/nodes/COM_HueSaturationValueCorrectNode.h b/source/blender/compositor/nodes/COM_HueSaturationValueCorrectNode.h index ed5f2b51ce3..dd5f70f6579 100644 --- a/source/blender/compositor/nodes/COM_HueSaturationValueCorrectNode.h +++ b/source/blender/compositor/nodes/COM_HueSaturationValueCorrectNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_HueSaturationValueCorrectNode_h -#define _COM_HueSaturationValueCorrectNode_h +#ifndef _COM_HueSaturationValueCorrectNode_h_ +#define _COM_HueSaturationValueCorrectNode_h_ #include "COM_Node.h" diff --git a/source/blender/compositor/nodes/COM_HueSaturationValueNode.h b/source/blender/compositor/nodes/COM_HueSaturationValueNode.h index 92c18019196..47b89a35269 100644 --- a/source/blender/compositor/nodes/COM_HueSaturationValueNode.h +++ b/source/blender/compositor/nodes/COM_HueSaturationValueNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_HueSaturationValueNode_h -#define _COM_HueSaturationValueNode_h +#ifndef _COM_HueSaturationValueNode_h_ +#define _COM_HueSaturationValueNode_h_ #include "COM_Node.h" diff --git a/source/blender/compositor/nodes/COM_ImageNode.h b/source/blender/compositor/nodes/COM_ImageNode.h index 384dd6c09ff..49006efbed5 100644 --- a/source/blender/compositor/nodes/COM_ImageNode.h +++ b/source/blender/compositor/nodes/COM_ImageNode.h @@ -34,7 +34,6 @@ extern "C" { * @ingroup Node */ class ImageNode : public Node { - private: NodeOperation *doMultilayerCheck(ExecutionSystem *system, RenderLayer *rl, Image *image, ImageUser *user, int framenumber, int outputsocketIndex, int pass, DataType datatype); public: diff --git a/source/blender/compositor/nodes/COM_KeyingNode.cpp b/source/blender/compositor/nodes/COM_KeyingNode.cpp index 50c1903982e..cc6fc6e1236 100644 --- a/source/blender/compositor/nodes/COM_KeyingNode.cpp +++ b/source/blender/compositor/nodes/COM_KeyingNode.cpp @@ -34,13 +34,15 @@ #include "COM_CombineChannelsOperation.h" #include "COM_ConvertRGBToYCCOperation.h" #include "COM_ConvertYCCToRGBOperation.h" -#include "COM_GaussianBokehBlurOperation.h" #include "COM_SetValueOperation.h" #include "COM_DilateErodeOperation.h" #include "COM_SetAlphaOperation.h" +#include "COM_GaussianAlphaXBlurOperation.h" +#include "COM_GaussianAlphaYBlurOperation.h" + KeyingNode::KeyingNode(bNode *editorNode) : Node(editorNode) { /* pass */ @@ -67,13 +69,21 @@ OutputSocket *KeyingNode::setupPreBlur(ExecutionSystem *graph, InputSocket *inpu addLink(graph, separateOperation->getOutputSocket(0), combineOperation->getInputSocket(channel)); } else { - KeyingBlurOperation *blurOperation = new KeyingBlurOperation(); + KeyingBlurOperation *blurXOperation = new KeyingBlurOperation(); + KeyingBlurOperation *blurYOperation = new KeyingBlurOperation(); + + blurXOperation->setSize(size); + blurXOperation->setAxis(KeyingBlurOperation::BLUR_AXIS_X); + + blurYOperation->setSize(size); + blurYOperation->setAxis(KeyingBlurOperation::BLUR_AXIS_Y); - blurOperation->setSize(size); + addLink(graph, separateOperation->getOutputSocket(), blurXOperation->getInputSocket(0)); + addLink(graph, blurXOperation->getOutputSocket(), blurYOperation->getInputSocket(0)); + addLink(graph, blurYOperation->getOutputSocket(0), combineOperation->getInputSocket(channel)); - addLink(graph, separateOperation->getOutputSocket(0), blurOperation->getInputSocket(0)); - addLink(graph, blurOperation->getOutputSocket(0), combineOperation->getInputSocket(channel)); - graph->addOperation(blurOperation); + graph->addOperation(blurXOperation); + graph->addOperation(blurYOperation); } } @@ -87,30 +97,37 @@ OutputSocket *KeyingNode::setupPreBlur(ExecutionSystem *graph, InputSocket *inpu return convertYCCToRGBOperation->getOutputSocket(0); } -OutputSocket *KeyingNode::setupPostBlur(ExecutionSystem *graph, OutputSocket *postBLurInput, int size) +OutputSocket *KeyingNode::setupPostBlur(ExecutionSystem *graph, OutputSocket *postBlurInput, int size) { - KeyingBlurOperation *blurOperation = new KeyingBlurOperation(); + KeyingBlurOperation *blurXOperation = new KeyingBlurOperation(); + KeyingBlurOperation *blurYOperation = new KeyingBlurOperation(); - blurOperation->setSize(size); + blurXOperation->setSize(size); + blurXOperation->setAxis(KeyingBlurOperation::BLUR_AXIS_X); - addLink(graph, postBLurInput, blurOperation->getInputSocket(0)); + blurYOperation->setSize(size); + blurYOperation->setAxis(KeyingBlurOperation::BLUR_AXIS_Y); - graph->addOperation(blurOperation); + addLink(graph, postBlurInput, blurXOperation->getInputSocket(0)); + addLink(graph, blurXOperation->getOutputSocket(), blurYOperation->getInputSocket(0)); - return blurOperation->getOutputSocket(); + graph->addOperation(blurXOperation); + graph->addOperation(blurYOperation); + + return blurYOperation->getOutputSocket(); } OutputSocket *KeyingNode::setupDilateErode(ExecutionSystem *graph, OutputSocket *dilateErodeInput, int distance) { - DilateStepOperation *dilateErodeOperation; + DilateDistanceOperation *dilateErodeOperation; if (distance > 0) { - dilateErodeOperation = new DilateStepOperation(); - dilateErodeOperation->setIterations(distance); + dilateErodeOperation = new DilateDistanceOperation(); + dilateErodeOperation->setDistance(distance); } else { - dilateErodeOperation = new ErodeStepOperation(); - dilateErodeOperation->setIterations(-distance); + dilateErodeOperation = new ErodeDistanceOperation(); + dilateErodeOperation->setDistance(-distance); } addLink(graph, dilateErodeInput, dilateErodeOperation->getInputSocket(0)); @@ -120,6 +137,46 @@ OutputSocket *KeyingNode::setupDilateErode(ExecutionSystem *graph, OutputSocket return dilateErodeOperation->getOutputSocket(0); } +OutputSocket *KeyingNode::setupFeather(ExecutionSystem *graph, CompositorContext *context, + OutputSocket *featherInput, int falloff, int distance) +{ + /* this uses a modified gaussian blur function otherwise its far too slow */ + CompositorQuality quality = context->getQuality(); + + /* initialize node data */ + NodeBlurData *data = (NodeBlurData *)&this->m_alpha_blur; + memset(data, 0, sizeof(*data)); + data->filtertype = R_FILTER_GAUSS; + + if (distance > 0) { + data->sizex = data->sizey = distance; + } + else { + data->sizex = data->sizey = -distance; + } + + GaussianAlphaXBlurOperation *operationx = new GaussianAlphaXBlurOperation(); + operationx->setData(data); + operationx->setQuality(quality); + operationx->setSize(1.0f); + operationx->setSubtract(distance < 0); + operationx->setFalloff(falloff); + graph->addOperation(operationx); + + GaussianAlphaYBlurOperation *operationy = new GaussianAlphaYBlurOperation(); + operationy->setData(data); + operationy->setQuality(quality); + operationy->setSize(1.0f); + operationy->setSubtract(distance < 0); + operationy->setFalloff(falloff); + graph->addOperation(operationy); + + addLink(graph, featherInput, operationx->getInputSocket(0)); + addLink(graph, operationx->getOutputSocket(), operationy->getInputSocket(0)); + + return operationy->getOutputSocket(); +} + OutputSocket *KeyingNode::setupDespill(ExecutionSystem *graph, OutputSocket *despillInput, OutputSocket *inputScreen, float factor) { KeyingDespillOperation *despillOperation = new KeyingDespillOperation(); @@ -162,7 +219,7 @@ void KeyingNode::convertToOperations(ExecutionSystem *graph, CompositorContext * OutputSocket *outputImage = this->getOutputSocket(0); OutputSocket *outputMatte = this->getOutputSocket(1); OutputSocket *outputEdges = this->getOutputSocket(2); - OutputSocket *postprocessedMatte, *postprocessedImage, *originalImage, *edgesMatte; + OutputSocket *postprocessedMatte = NULL, *postprocessedImage = NULL, *originalImage = NULL, *edgesMatte = NULL; bNode *editorNode = this->getbNode(); NodeKeyingData *keying_data = (NodeKeyingData *) editorNode->storage; @@ -196,9 +253,11 @@ void KeyingNode::convertToOperations(ExecutionSystem *graph, CompositorContext * keying_data->clip_black, keying_data->clip_white, false); } - edgesMatte = setupClip(graph, postprocessedMatte, - keying_data->edge_kernel_radius, keying_data->edge_kernel_tolerance, - keying_data->clip_black, keying_data->clip_white, true); + if (outputEdges->isConnected()) { + edgesMatte = setupClip(graph, postprocessedMatte, + keying_data->edge_kernel_radius, keying_data->edge_kernel_tolerance, + keying_data->clip_black, keying_data->clip_white, true); + } /* apply blur on matte if needed */ if (keying_data->blur_post) @@ -209,6 +268,12 @@ void KeyingNode::convertToOperations(ExecutionSystem *graph, CompositorContext * postprocessedMatte = setupDilateErode(graph, postprocessedMatte, keying_data->dilate_distance); } + /* matte feather */ + if (keying_data->feather_distance != 0) { + postprocessedMatte = setupFeather(graph, context, postprocessedMatte, keying_data->feather_falloff, + keying_data->feather_distance); + } + /* set alpha channel to output image */ SetAlphaOperation *alphaOperation = new SetAlphaOperation(); addLink(graph, originalImage, alphaOperation->getInputSocket(0)); @@ -226,7 +291,9 @@ void KeyingNode::convertToOperations(ExecutionSystem *graph, CompositorContext * /* connect result to output sockets */ outputImage->relinkConnections(postprocessedImage); outputMatte->relinkConnections(postprocessedMatte); - outputEdges->relinkConnections(edgesMatte); + + if (edgesMatte) + outputEdges->relinkConnections(edgesMatte); graph->addOperation(alphaOperation); } diff --git a/source/blender/compositor/nodes/COM_KeyingNode.h b/source/blender/compositor/nodes/COM_KeyingNode.h index cc1d447c66e..294a27bb52c 100644 --- a/source/blender/compositor/nodes/COM_KeyingNode.h +++ b/source/blender/compositor/nodes/COM_KeyingNode.h @@ -24,14 +24,18 @@ #include "COM_Node.h" /** - * @brief KeyingNode - * @ingroup Node - */ + * @brief KeyingNode + * @ingroup Node + */ class KeyingNode : public Node { protected: + NodeBlurData m_alpha_blur; /* only used for blurring alpha, since the dilate/erode node doesnt have this */ + OutputSocket *setupPreBlur(ExecutionSystem *graph, InputSocket *inputImage, int size, OutputSocket **originalImage); - OutputSocket *setupPostBlur(ExecutionSystem *graph, OutputSocket *postBLurInput, int size); + OutputSocket *setupPostBlur(ExecutionSystem *graph, OutputSocket *postBlurInput, int size); OutputSocket *setupDilateErode(ExecutionSystem *graph, OutputSocket *dilateErodeInput, int distance); + OutputSocket *setupFeather(ExecutionSystem *graph, CompositorContext *context, OutputSocket *featherInput, + int falloff, int distance); OutputSocket *setupDespill(ExecutionSystem *graph, OutputSocket *despillInput, OutputSocket *inputSrceen, float factor); OutputSocket *setupClip(ExecutionSystem *graph, OutputSocket *clipInput, int kernelRadius, float kernelTolerance, float clipBlack, float clipWhite, bool edgeMatte); diff --git a/source/blender/compositor/nodes/COM_KeyingScreenNode.h b/source/blender/compositor/nodes/COM_KeyingScreenNode.h index 7c87219ef6e..9b8ac88bb6e 100644 --- a/source/blender/compositor/nodes/COM_KeyingScreenNode.h +++ b/source/blender/compositor/nodes/COM_KeyingScreenNode.h @@ -25,9 +25,9 @@ #include "DNA_node_types.h" /** - * @brief KeyingScreenNode - * @ingroup Node - */ + * @brief KeyingScreenNode + * @ingroup Node + */ class KeyingScreenNode : public Node { public: KeyingScreenNode(bNode *editorNode); diff --git a/source/blender/compositor/nodes/COM_LuminanceMatteNode.h b/source/blender/compositor/nodes/COM_LuminanceMatteNode.h index c699a0d1168..37f3c31113f 100644 --- a/source/blender/compositor/nodes/COM_LuminanceMatteNode.h +++ b/source/blender/compositor/nodes/COM_LuminanceMatteNode.h @@ -19,8 +19,8 @@ * Dalai Felinto */ -#ifndef COM_LuminanceMatteNODE_H -#define COM_LuminanceMatteNODE_H +#ifndef _COM_LuminanceMatteNode_h_ +#define _COM_LuminanceMatteNode_h_ #include "COM_Node.h" @@ -28,11 +28,10 @@ * @brief LuminanceMatteNode * @ingroup Node */ -class LuminanceMatteNode : public Node -{ +class LuminanceMatteNode : public Node { public: LuminanceMatteNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); }; -#endif // COM_LuminanceMatteNODE_H +#endif // _COM_LuminanceMatteNode_h_ diff --git a/source/blender/compositor/nodes/COM_MapUVNode.h b/source/blender/compositor/nodes/COM_MapUVNode.h index a1df790f192..2e5616e0bd0 100644 --- a/source/blender/compositor/nodes/COM_MapUVNode.h +++ b/source/blender/compositor/nodes/COM_MapUVNode.h @@ -19,8 +19,8 @@ * Dalai Felinto */ -#ifndef _COM_MapUVNode_h -#define _COM_MapUVNode_h +#ifndef _COM_MapUVNode_h_ +#define _COM_MapUVNode_h_ #include "COM_Node.h" diff --git a/source/blender/compositor/nodes/COM_MapValueNode.h b/source/blender/compositor/nodes/COM_MapValueNode.h index c7a842dff95..22aa5459ec0 100644 --- a/source/blender/compositor/nodes/COM_MapValueNode.h +++ b/source/blender/compositor/nodes/COM_MapValueNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_MapValueNode_h -#define _COM_MapValueNode_h +#ifndef _COM_MapValueNode_h_ +#define _COM_MapValueNode_h_ #include "COM_Node.h" #include "DNA_node_types.h" @@ -34,4 +34,5 @@ public: MapValueNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); }; -#endif + +#endif // _COM_MapValueNode_h_ diff --git a/source/blender/compositor/nodes/COM_MaskNode.h b/source/blender/compositor/nodes/COM_MaskNode.h index 8a9bc50eac7..cdd5d3c362e 100644 --- a/source/blender/compositor/nodes/COM_MaskNode.h +++ b/source/blender/compositor/nodes/COM_MaskNode.h @@ -21,6 +21,9 @@ * Sergey Sharybin */ +#ifndef _COM_MaskNode_h_ +#define _COM_MaskNode_h_ + #include "COM_Node.h" #include "DNA_node_types.h" @@ -29,10 +32,10 @@ * @ingroup Node */ class MaskNode : public Node { - - public: MaskNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); }; + +#endif // _COM_MaskNode_h_ diff --git a/source/blender/compositor/nodes/COM_MathNode.cpp b/source/blender/compositor/nodes/COM_MathNode.cpp index 6e9b49253e7..300c9967cc4 100644 --- a/source/blender/compositor/nodes/COM_MathNode.cpp +++ b/source/blender/compositor/nodes/COM_MathNode.cpp @@ -28,8 +28,7 @@ void MathNode::convertToOperations(ExecutionSystem *graph, CompositorContext *co { MathBaseOperation *operation = NULL; - switch (this->getbNode()->custom1) - { + switch (this->getbNode()->custom1) { case 0: /* Add */ operation = new MathAddOperation(); break; diff --git a/source/blender/compositor/nodes/COM_MathNode.h b/source/blender/compositor/nodes/COM_MathNode.h index 16d65843b0d..4f8e64754e7 100644 --- a/source/blender/compositor/nodes/COM_MathNode.h +++ b/source/blender/compositor/nodes/COM_MathNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_MathNode_h -#define _COM_MathNode_h +#ifndef _COM_MathNode_h_ +#define _COM_MathNode_h_ #include "COM_Node.h" diff --git a/source/blender/compositor/nodes/COM_MixNode.h b/source/blender/compositor/nodes/COM_MixNode.h index 99e8b4d48f0..76076d01427 100644 --- a/source/blender/compositor/nodes/COM_MixNode.h +++ b/source/blender/compositor/nodes/COM_MixNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_MixNode_h -#define _COM_MixNode_h +#ifndef _COM_MixNode_h_ +#define _COM_MixNode_h_ #include "COM_Node.h" #include "DNA_node_types.h" diff --git a/source/blender/compositor/nodes/COM_MovieClipNode.h b/source/blender/compositor/nodes/COM_MovieClipNode.h index d70881a6725..52ea11ea8e9 100644 --- a/source/blender/compositor/nodes/COM_MovieClipNode.h +++ b/source/blender/compositor/nodes/COM_MovieClipNode.h @@ -20,6 +20,9 @@ * Monique Dewanchand */ +#ifndef _COM_MovieClipNode_h_ +#define _COM_MovieClipNode_h_ + #include "COM_Node.h" #include "DNA_node_types.h" @@ -28,10 +31,9 @@ * @ingroup Node */ class MovieClipNode : public Node { - - public: MovieClipNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); - }; + +#endif // _COM_MovieClipNode_h_ diff --git a/source/blender/compositor/nodes/COM_NormalNode.h b/source/blender/compositor/nodes/COM_NormalNode.h index bf684298e65..660d90040bd 100644 --- a/source/blender/compositor/nodes/COM_NormalNode.h +++ b/source/blender/compositor/nodes/COM_NormalNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef COM_NORMALNODE_H -#define COM_NORMALNODE_H +#ifndef _COM_NormalNode_h_ +#define _COM_NormalNode_h_ #include "COM_Node.h" @@ -29,8 +29,7 @@ * @brief NormalNode * @ingroup Node */ -class NormalNode : public Node -{ +class NormalNode : public Node { public: NormalNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); diff --git a/source/blender/compositor/nodes/COM_OutputFileNode.h b/source/blender/compositor/nodes/COM_OutputFileNode.h index 79c9b577643..e3194436f7f 100644 --- a/source/blender/compositor/nodes/COM_OutputFileNode.h +++ b/source/blender/compositor/nodes/COM_OutputFileNode.h @@ -21,8 +21,8 @@ * Lukas Tönne */ -#ifndef _COM_OutputFileNode_h -#define _COM_OutputFileNode_h +#ifndef _COM_OutputFileNode_h_ +#define _COM_OutputFileNode_h_ #include "COM_Node.h" #include "DNA_node_types.h" diff --git a/source/blender/compositor/nodes/COM_SeparateHSVANode.h b/source/blender/compositor/nodes/COM_SeparateHSVANode.h index 4a7e86849dc..6199237ebda 100644 --- a/source/blender/compositor/nodes/COM_SeparateHSVANode.h +++ b/source/blender/compositor/nodes/COM_SeparateHSVANode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_SeparateHSVANode_h -#define _COM_SeparateHSVANode_h +#ifndef _COM_SeparateHSVANode_h_ +#define _COM_SeparateHSVANode_h_ #include "COM_Node.h" #include "DNA_node_types.h" diff --git a/source/blender/compositor/nodes/COM_SeparateRGBANode.h b/source/blender/compositor/nodes/COM_SeparateRGBANode.h index c1be02753da..35321304d99 100644 --- a/source/blender/compositor/nodes/COM_SeparateRGBANode.h +++ b/source/blender/compositor/nodes/COM_SeparateRGBANode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_SeparateRGBANode_h -#define _COM_SeparateRGBANode_h +#ifndef _COM_SeparateRGBANode_h_ +#define _COM_SeparateRGBANode_h_ #include "COM_Node.h" #include "DNA_node_types.h" diff --git a/source/blender/compositor/nodes/COM_SeparateYCCANode.h b/source/blender/compositor/nodes/COM_SeparateYCCANode.h index 4b216841e2a..542e1693932 100644 --- a/source/blender/compositor/nodes/COM_SeparateYCCANode.h +++ b/source/blender/compositor/nodes/COM_SeparateYCCANode.h @@ -19,8 +19,8 @@ * Dalai Felinto */ -#ifndef _COM_SeparateYCCANode_h -#define _COM_SeparateYCCANode_h +#ifndef _COM_SeparateYCCANode_h_ +#define _COM_SeparateYCCANode_h_ #include "COM_Node.h" #include "DNA_node_types.h" diff --git a/source/blender/compositor/nodes/COM_SeparateYUVANode.h b/source/blender/compositor/nodes/COM_SeparateYUVANode.h index e1763e37dff..e51c0ce4fa6 100644 --- a/source/blender/compositor/nodes/COM_SeparateYUVANode.h +++ b/source/blender/compositor/nodes/COM_SeparateYUVANode.h @@ -19,8 +19,8 @@ * Dalai Felinto */ -#ifndef _COM_SeparateYUVANode_h -#define _COM_SeparateYUVANode_h +#ifndef _COM_SeparateYUVANode_h_ +#define _COM_SeparateYUVANode_h_ #include "COM_Node.h" #include "DNA_node_types.h" diff --git a/source/blender/compositor/nodes/COM_SetAlphaNode.h b/source/blender/compositor/nodes/COM_SetAlphaNode.h index 0707cf5dac1..e82fa210a89 100644 --- a/source/blender/compositor/nodes/COM_SetAlphaNode.h +++ b/source/blender/compositor/nodes/COM_SetAlphaNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_SetAlphaNode_h -#define _COM_SetAlphaNode_h +#ifndef _COM_SetAlphaNode_h_ +#define _COM_SetAlphaNode_h_ #include "COM_Node.h" diff --git a/source/blender/compositor/nodes/COM_SplitViewerNode.h b/source/blender/compositor/nodes/COM_SplitViewerNode.h index 6c532d4e813..f17cfd57cbf 100644 --- a/source/blender/compositor/nodes/COM_SplitViewerNode.h +++ b/source/blender/compositor/nodes/COM_SplitViewerNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_SplitViewerNode_h -#define _COM_SplitViewerNode_h +#ifndef _COM_SplitViewerNode_h_ +#define _COM_SplitViewerNode_h_ #include "COM_Node.h" #include "DNA_node_types.h" diff --git a/source/blender/compositor/nodes/COM_Stabilize2dNode.h b/source/blender/compositor/nodes/COM_Stabilize2dNode.h index 589e090b48c..3363ff4142c 100644 --- a/source/blender/compositor/nodes/COM_Stabilize2dNode.h +++ b/source/blender/compositor/nodes/COM_Stabilize2dNode.h @@ -20,6 +20,9 @@ * Monique Dewanchand */ +#ifndef _COM_Stabilize2dNode_h_ +#define _COM_Stabilize2dNode_h_ + #include "COM_Node.h" #include "DNA_node_types.h" @@ -32,3 +35,5 @@ public: Stabilize2dNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); }; + +#endif diff --git a/source/blender/compositor/nodes/COM_SwitchNode.h b/source/blender/compositor/nodes/COM_SwitchNode.h index be3d54c3000..16d9e18885b 100644 --- a/source/blender/compositor/nodes/COM_SwitchNode.h +++ b/source/blender/compositor/nodes/COM_SwitchNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_SwitchNode_h -#define _COM_SwitchNode_h +#ifndef _COM_SwitchNode_h_ +#define _COM_SwitchNode_h_ #include "COM_Node.h" #include "COM_NodeOperation.h" diff --git a/source/blender/compositor/nodes/COM_TransformNode.h b/source/blender/compositor/nodes/COM_TransformNode.h index da40b655f29..57a7a0229ec 100644 --- a/source/blender/compositor/nodes/COM_TransformNode.h +++ b/source/blender/compositor/nodes/COM_TransformNode.h @@ -20,6 +20,9 @@ * Monique Dewanchand */ +#ifndef _COM_TransformNode_h_ +#define _COM_TransformNode_h_ + #include "COM_Node.h" #include "DNA_node_types.h" @@ -32,3 +35,5 @@ public: TransformNode(bNode *editorNode); void convertToOperations(ExecutionSystem *graph, CompositorContext *context); }; + +#endif // _COM_TransformNode_h_ diff --git a/source/blender/compositor/nodes/COM_ViewerNode.h b/source/blender/compositor/nodes/COM_ViewerNode.h index e1f1226f1f1..3a9954b8aea 100644 --- a/source/blender/compositor/nodes/COM_ViewerNode.h +++ b/source/blender/compositor/nodes/COM_ViewerNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_ViewerNode_h -#define _COM_ViewerNode_h +#ifndef _COM_ViewerNode_h_ +#define _COM_ViewerNode_h_ #include "COM_Node.h" #include "DNA_node_types.h" diff --git a/source/blender/compositor/nodes/COM_ZCombineNode.h b/source/blender/compositor/nodes/COM_ZCombineNode.h index a2ceedfc2cd..61f4037be90 100644 --- a/source/blender/compositor/nodes/COM_ZCombineNode.h +++ b/source/blender/compositor/nodes/COM_ZCombineNode.h @@ -20,8 +20,8 @@ * Monique Dewanchand */ -#ifndef _COM_ZCombineNode_h -#define _COM_ZCombineNode_h +#ifndef _COM_ZCombineNode_h_ +#define _COM_ZCombineNode_h_ #include "COM_Node.h" |