Blender
V4.3
source
blender
compositor
nodes
COM_NormalNode.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_NormalNode.h
"
6
#include "
COM_DotproductOperation.h
"
7
#include "
COM_SetVectorOperation.h
"
8
9
namespace
blender::compositor
{
10
11
NormalNode::NormalNode
(
bNode
*editor_node) :
Node
(editor_node)
12
{
13
/* pass */
14
}
15
16
void
NormalNode::convert_to_operations
(
NodeConverter
&converter,
17
const
CompositorContext
&
/*context*/
)
const
18
{
19
NodeInput
*input_socket = this->
get_input_socket
(0);
20
NodeOutput
*output_socket = this->
get_output_socket
(0);
21
NodeOutput
*output_socket_dotproduct = this->
get_output_socket
(1);
22
23
SetVectorOperation
*operation_set =
new
SetVectorOperation
();
24
float
normal[3];
25
output_socket->
get_editor_value_vector
(normal);
26
/* animation can break normalization, this restores it */
27
normalize_v3
(normal);
28
operation_set->
setX
(normal[0]);
29
operation_set->
setY
(normal[1]);
30
operation_set->
setZ
(normal[2]);
31
operation_set->
setW
(0.0f);
32
converter.
add_operation
(operation_set);
33
34
converter.
map_output_socket
(output_socket, operation_set->
get_output_socket
(0));
35
36
DotproductOperation
*operation =
new
DotproductOperation
();
37
converter.
add_operation
(operation);
38
39
converter.
map_input_socket
(input_socket, operation->
get_input_socket
(0));
40
converter.
add_link
(operation_set->
get_output_socket
(0), operation->
get_input_socket
(1));
41
converter.
map_output_socket
(output_socket_dotproduct, operation->
get_output_socket
(0));
42
}
43
44
}
// namespace blender::compositor
normalize_v3
MINLINE float normalize_v3(float n[3])
Definition
math_vector_inline.c:1243
COM_DotproductOperation.h
COM_NormalNode.h
COM_SetVectorOperation.h
blender::compositor::CompositorContext
Overall context of the compositor.
Definition
COM_CompositorContext.h:27
blender::compositor::DotproductOperation
Definition
COM_DotproductOperation.h:11
blender::compositor::NodeConverter
Definition
COM_NodeConverter.h:29
blender::compositor::NodeConverter::add_link
void add_link(NodeOperationOutput *from, NodeOperationInput *to)
Definition
COM_NodeConverter.cc:36
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_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::NodeOutput::get_editor_value_vector
void get_editor_value_vector(float *value)
Definition
COM_Node.cc:180
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::NormalNode::convert_to_operations
void convert_to_operations(NodeConverter &converter, const CompositorContext &context) const override
convert node to operation
Definition
COM_NormalNode.cc:16
blender::compositor::NormalNode::NormalNode
NormalNode(bNode *editor_node)
Definition
COM_NormalNode.cc:11
blender::compositor::SetVectorOperation
Definition
COM_SetVectorOperation.h:15
blender::compositor::SetVectorOperation::setY
void setY(float value)
Definition
COM_SetVectorOperation.h:47
blender::compositor::SetVectorOperation::setZ
void setZ(float value)
Definition
COM_SetVectorOperation.h:55
blender::compositor::SetVectorOperation::setX
void setX(float value)
Definition
COM_SetVectorOperation.h:39
blender::compositor::SetVectorOperation::setW
void setW(float value)
Definition
COM_SetVectorOperation.h:63
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