Blender
V4.3
source
blender
compositor
nodes
COM_FilterNode.cc
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2011 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
5
#include "
COM_FilterNode.h
"
6
#include "
BKE_node.hh
"
7
#include "
COM_ConvolutionEdgeFilterOperation.h
"
8
9
namespace
blender::compositor
{
10
11
FilterNode::FilterNode
(
bNode
*editor_node) :
Node
(editor_node)
12
{
13
/* pass */
14
}
15
16
void
FilterNode::convert_to_operations
(
NodeConverter
&converter,
17
const
CompositorContext
&
/*context*/
)
const
18
{
19
NodeInput
*input_socket = this->
get_input_socket
(0);
20
NodeInput
*input_image_socket = this->
get_input_socket
(1);
21
NodeOutput
*output_socket = this->
get_output_socket
(0);
22
ConvolutionFilterOperation
*operation =
nullptr
;
23
24
switch
(this->
get_bnode
()->custom1) {
25
case
CMP_NODE_FILTER_SOFT
:
26
operation =
new
ConvolutionFilterOperation
();
27
operation->
set3x3Filter
(1 / 16.0f,
28
2 / 16.0f,
29
1 / 16.0f,
30
2 / 16.0f,
31
4 / 16.0f,
32
2 / 16.0f,
33
1 / 16.0f,
34
2 / 16.0f,
35
1 / 16.0f);
36
break
;
37
case
CMP_NODE_FILTER_SHARP_BOX
:
38
operation =
new
ConvolutionFilterOperation
();
39
operation->
set3x3Filter
(-1, -1, -1, -1, 9, -1, -1, -1, -1);
40
break
;
41
case
CMP_NODE_FILTER_LAPLACE
:
42
operation =
new
ConvolutionEdgeFilterOperation
();
43
operation->
set3x3Filter
(-1 / 8.0f,
44
-1 / 8.0f,
45
-1 / 8.0f,
46
-1 / 8.0f,
47
1.0f,
48
-1 / 8.0f,
49
-1 / 8.0f,
50
-1 / 8.0f,
51
-1 / 8.0f);
52
break
;
53
case
CMP_NODE_FILTER_SOBEL
:
54
operation =
new
ConvolutionEdgeFilterOperation
();
55
operation->
set3x3Filter
(1, 2, 1, 0, 0, 0, -1, -2, -1);
56
break
;
57
case
CMP_NODE_FILTER_PREWITT
:
58
operation =
new
ConvolutionEdgeFilterOperation
();
59
operation->
set3x3Filter
(1, 1, 1, 0, 0, 0, -1, -1, -1);
60
break
;
61
case
CMP_NODE_FILTER_KIRSCH
:
62
operation =
new
ConvolutionEdgeFilterOperation
();
63
operation->
set3x3Filter
(5, 5, 5, -3, -3, -3, -2, -2, -2);
64
break
;
65
case
CMP_NODE_FILTER_SHADOW
:
66
operation =
new
ConvolutionFilterOperation
();
67
operation->
set3x3Filter
(1, 2, 1, 0, 1, 0, -1, -2, -1);
68
break
;
69
case
CMP_NODE_FILTER_SHARP_DIAMOND
:
70
operation =
new
ConvolutionFilterOperation
();
71
operation->
set3x3Filter
(0, -1, 0, -1, 5, -1, 0, -1, 0);
72
break
;
73
default
:
74
operation =
new
ConvolutionFilterOperation
();
75
operation->
set3x3Filter
(0, 0, 0, 0, 1, 0, 0, 0, 0);
76
break
;
77
}
78
converter.
add_operation
(operation);
79
80
converter.
map_input_socket
(input_image_socket, operation->
get_input_socket
(0));
81
converter.
map_input_socket
(input_socket, operation->
get_input_socket
(1));
82
converter.
map_output_socket
(output_socket, operation->
get_output_socket
());
83
84
converter.
add_preview
(operation->
get_output_socket
(0));
85
}
86
87
}
// namespace blender::compositor
BKE_node.hh
COM_ConvolutionEdgeFilterOperation.h
COM_FilterNode.h
CMP_NODE_FILTER_PREWITT
@ CMP_NODE_FILTER_PREWITT
Definition
DNA_node_types.h:2723
CMP_NODE_FILTER_SHARP_BOX
@ CMP_NODE_FILTER_SHARP_BOX
Definition
DNA_node_types.h:2720
CMP_NODE_FILTER_KIRSCH
@ CMP_NODE_FILTER_KIRSCH
Definition
DNA_node_types.h:2724
CMP_NODE_FILTER_LAPLACE
@ CMP_NODE_FILTER_LAPLACE
Definition
DNA_node_types.h:2721
CMP_NODE_FILTER_SHARP_DIAMOND
@ CMP_NODE_FILTER_SHARP_DIAMOND
Definition
DNA_node_types.h:2726
CMP_NODE_FILTER_SOFT
@ CMP_NODE_FILTER_SOFT
Definition
DNA_node_types.h:2719
CMP_NODE_FILTER_SOBEL
@ CMP_NODE_FILTER_SOBEL
Definition
DNA_node_types.h:2722
CMP_NODE_FILTER_SHADOW
@ CMP_NODE_FILTER_SHADOW
Definition
DNA_node_types.h:2725
blender::compositor::CompositorContext
Overall context of the compositor.
Definition
COM_CompositorContext.h:27
blender::compositor::ConvolutionEdgeFilterOperation
Definition
COM_ConvolutionEdgeFilterOperation.h:11
blender::compositor::ConvolutionFilterOperation
Definition
COM_ConvolutionFilterOperation.h:11
blender::compositor::ConvolutionFilterOperation::set3x3Filter
void set3x3Filter(float f1, float f2, float f3, float f4, float f5, float f6, float f7, float f8, float f9)
Definition
COM_ConvolutionFilterOperation.cc:18
blender::compositor::FilterNode::convert_to_operations
void convert_to_operations(NodeConverter &converter, const CompositorContext &context) const override
convert node to operation
Definition
COM_FilterNode.cc:16
blender::compositor::FilterNode::FilterNode
FilterNode(bNode *editor_node)
Definition
COM_FilterNode.cc:11
blender::compositor::NodeConverter
Definition
COM_NodeConverter.h:29
blender::compositor::NodeConverter::map_output_socket
void map_output_socket(NodeOutput *node_socket, NodeOperationOutput *operation_socket)
Definition
COM_NodeConverter.cc:30
blender::compositor::NodeConverter::add_preview
void add_preview(NodeOperationOutput *output)
Definition
COM_NodeConverter.cc:41
blender::compositor::NodeConverter::add_operation
void add_operation(NodeOperation *operation)
Definition
COM_NodeConverter.cc:20
blender::compositor::NodeConverter::map_input_socket
void map_input_socket(NodeInput *node_socket, NodeOperationInput *operation_socket)
Definition
COM_NodeConverter.cc:25
blender::compositor::NodeInput
NodeInput are sockets that can receive data/input.
Definition
COM_Node.h:191
blender::compositor::NodeOperation::get_output_socket
NodeOperationOutput * get_output_socket(unsigned int index=0)
Definition
COM_NodeOperation.cc:87
blender::compositor::NodeOperation::get_input_socket
NodeOperationInput * get_input_socket(unsigned int index)
Definition
COM_NodeOperation.cc:92
blender::compositor::NodeOutput
NodeOutput are sockets that can send data/input.
Definition
COM_Node.h:239
blender::compositor::Node
Definition
COM_Node.h:25
blender::compositor::Node::get_output_socket
NodeOutput * get_output_socket(unsigned int index=0) const
Definition
COM_Node.cc:85
blender::compositor::Node::get_input_socket
NodeInput * get_input_socket(unsigned int index) const
Definition
COM_Node.cc:90
blender::compositor::Node::get_bnode
const bNode * get_bnode() const
get the reference to the SDNA bNode struct
Definition
COM_Node.h:65
blender::compositor
Definition
COM_JumpFloodingAlgorithm.cc:20
bNode
Definition
DNA_node_types.h:357
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0