Blender
V4.3
source
blender
nodes
composite
nodes
node_composite_sepcomb_yuva.cc
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2006 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9
#include "
GPU_material.hh
"
10
11
#include "
COM_shader_node.hh
"
12
13
#include "
node_composite_util.hh
"
14
15
/* **************** SEPARATE YUVA ******************** */
16
17
namespace
blender::nodes::node_composite_separate_yuva_cc
{
18
19
static
void
cmp_node_sepyuva_declare
(
NodeDeclarationBuilder
&
b
)
20
{
21
b
.add_input<
decl::Color
>(
"Image"
)
22
.default_value({1.0f, 1.0f, 1.0f, 1.0f})
23
.compositor_domain_priority(0);
24
b
.add_output<
decl::Float
>(
"Y"
).translation_context(
BLT_I18NCONTEXT_COLOR
);
25
b
.add_output<
decl::Float
>(
"U"
).translation_context(
BLT_I18NCONTEXT_COLOR
);
26
b
.add_output<
decl::Float
>(
"V"
).translation_context(
BLT_I18NCONTEXT_COLOR
);
27
b
.add_output<
decl::Float
>(
"A"
).translation_context(
BLT_I18NCONTEXT_COLOR
);
28
}
29
30
using namespace
blender::realtime_compositor
;
31
32
class
SeparateYUVAShaderNode
:
public
ShaderNode
{
33
public
:
34
using
ShaderNode::ShaderNode
;
35
36
void
compile
(
GPUMaterial
*material)
override
37
{
38
GPUNodeStack
*
inputs
=
get_inputs_array
();
39
GPUNodeStack
*
outputs
=
get_outputs_array
();
40
41
GPU_stack_link
(material, &
bnode
(),
"node_composite_separate_yuva_itu_709"
,
inputs
,
outputs
);
42
}
43
};
44
45
static
ShaderNode
*
get_compositor_shader_node
(
DNode
node)
46
{
47
return
new
SeparateYUVAShaderNode
(node);
48
}
49
50
}
// namespace blender::nodes::node_composite_separate_yuva_cc
51
52
void
register_node_type_cmp_sepyuva
()
53
{
54
namespace
file_ns =
blender::nodes::node_composite_separate_yuva_cc
;
55
56
static
blender::bke::bNodeType
ntype;
57
58
cmp_node_type_base
(
59
&ntype,
CMP_NODE_SEPYUVA_LEGACY
,
"Separate YUVA (Legacy)"
,
NODE_CLASS_CONVERTER
);
60
ntype.
declare
= file_ns::cmp_node_sepyuva_declare;
61
ntype.
gather_link_search_ops
=
nullptr
;
62
ntype.
get_compositor_shader_node
= file_ns::get_compositor_shader_node;
63
64
blender::bke::node_register_type
(&ntype);
65
}
66
67
/* **************** COMBINE YUVA ******************** */
68
69
namespace
blender::nodes::node_composite_combine_yuva_cc
{
70
71
static
void
cmp_node_combyuva_declare
(
NodeDeclarationBuilder
&
b
)
72
{
73
b
.add_input<
decl::Float
>(
"Y"
)
74
.
min
(0.0f)
75
.max(1.0f)
76
.
compositor_domain_priority
(0)
77
.translation_context(
BLT_I18NCONTEXT_COLOR
);
78
b
.add_input<
decl::Float
>(
"U"
)
79
.
min
(0.0f)
80
.max(1.0f)
81
.
compositor_domain_priority
(1)
82
.translation_context(
BLT_I18NCONTEXT_COLOR
);
83
b
.add_input<
decl::Float
>(
"V"
)
84
.
min
(0.0f)
85
.max(1.0f)
86
.
compositor_domain_priority
(2)
87
.translation_context(
BLT_I18NCONTEXT_COLOR
);
88
b
.add_input<
decl::Float
>(
"A"
)
89
.default_value(1.0f)
90
.min(0.0f)
91
.max(1.0f)
92
.
compositor_domain_priority
(3)
93
.translation_context(
BLT_I18NCONTEXT_COLOR
);
94
b
.add_output<
decl::Color
>(
"Image"
);
95
}
96
97
using namespace
blender::realtime_compositor
;
98
99
class
CombineYUVAShaderNode
:
public
ShaderNode
{
100
public
:
101
using
ShaderNode::ShaderNode
;
102
103
void
compile
(
GPUMaterial
*material)
override
104
{
105
GPUNodeStack
*
inputs
=
get_inputs_array
();
106
GPUNodeStack
*
outputs
=
get_outputs_array
();
107
108
GPU_stack_link
(material, &
bnode
(),
"node_composite_combine_yuva_itu_709"
,
inputs
,
outputs
);
109
}
110
};
111
112
static
ShaderNode
*
get_compositor_shader_node
(
DNode
node)
113
{
114
return
new
CombineYUVAShaderNode
(node);
115
}
116
117
}
// namespace blender::nodes::node_composite_combine_yuva_cc
118
119
void
register_node_type_cmp_combyuva
()
120
{
121
namespace
file_ns =
blender::nodes::node_composite_combine_yuva_cc
;
122
123
static
blender::bke::bNodeType
ntype;
124
125
cmp_node_type_base
(
126
&ntype,
CMP_NODE_COMBYUVA_LEGACY
,
"Combine YUVA (Legacy)"
,
NODE_CLASS_CONVERTER
);
127
ntype.
declare
= file_ns::cmp_node_combyuva_declare;
128
ntype.
gather_link_search_ops
=
nullptr
;
129
ntype.
get_compositor_shader_node
= file_ns::get_compositor_shader_node;
130
131
blender::bke::node_register_type
(&ntype);
132
}
NODE_CLASS_CONVERTER
#define NODE_CLASS_CONVERTER
Definition
BKE_node.hh:410
CMP_NODE_COMBYUVA_LEGACY
#define CMP_NODE_COMBYUVA_LEGACY
Definition
BKE_node.hh:1045
CMP_NODE_SEPYUVA_LEGACY
#define CMP_NODE_SEPYUVA_LEGACY
Definition
BKE_node.hh:1044
BLT_I18NCONTEXT_COLOR
#define BLT_I18NCONTEXT_COLOR
Definition
BLT_translation.hh:140
COM_shader_node.hh
GPU_material.hh
GPU_stack_link
bool GPU_stack_link(GPUMaterial *mat, const bNode *node, const char *name, GPUNodeStack *in, GPUNodeStack *out,...)
Definition
gpu_node_graph.cc:821
blender::nodes::DNode
Definition
NOD_derived_node_tree.hh:71
blender::nodes::NodeDeclarationBuilder
Definition
NOD_node_declaration.hh:525
blender::nodes::SocketDeclaration::compositor_domain_priority
int compositor_domain_priority() const
Definition
node_declaration.cc:856
blender::nodes::decl::Color
Definition
NOD_socket_declarations.hh:129
blender::nodes::decl::Float
Definition
NOD_socket_declarations.hh:19
blender::nodes::node_composite_combine_yuva_cc::CombineYUVAShaderNode
Definition
node_composite_sepcomb_yuva.cc:99
blender::nodes::node_composite_combine_yuva_cc::CombineYUVAShaderNode::ShaderNode
ShaderNode(DNode node)
Definition
shader_node.cc:22
blender::nodes::node_composite_combine_yuva_cc::CombineYUVAShaderNode::compile
void compile(GPUMaterial *material) override
Definition
node_composite_sepcomb_yuva.cc:103
blender::nodes::node_composite_separate_yuva_cc::SeparateYUVAShaderNode
Definition
node_composite_sepcomb_yuva.cc:32
blender::nodes::node_composite_separate_yuva_cc::SeparateYUVAShaderNode::ShaderNode
ShaderNode(DNode node)
Definition
shader_node.cc:22
blender::nodes::node_composite_separate_yuva_cc::SeparateYUVAShaderNode::compile
void compile(GPUMaterial *material) override
Definition
node_composite_sepcomb_yuva.cc:36
blender::realtime_compositor::ShaderNode
Definition
COM_shader_node.hh:31
blender::realtime_compositor::ShaderNode::get_inputs_array
GPUNodeStack * get_inputs_array()
Definition
shader_node.cc:28
blender::realtime_compositor::ShaderNode::get_outputs_array
GPUNodeStack * get_outputs_array()
Definition
shader_node.cc:33
blender::realtime_compositor::ShaderNode::ShaderNode
ShaderNode(DNode node)
Definition
shader_node.cc:22
blender::realtime_compositor::ShaderNode::bnode
const bNode & bnode() const
Definition
shader_node.cc:62
b
local_group_size(16, 16) .push_constant(Type b
Definition
compositor_morphological_distance_info.hh:16
blender::bke::node_register_type
void node_register_type(bNodeType *ntype)
Definition
node.cc:1708
blender::nodes::node_composite_combine_yuva_cc
Definition
node_composite_sepcomb_yuva.cc:69
blender::nodes::node_composite_combine_yuva_cc::get_compositor_shader_node
static ShaderNode * get_compositor_shader_node(DNode node)
Definition
node_composite_sepcomb_yuva.cc:112
blender::nodes::node_composite_combine_yuva_cc::cmp_node_combyuva_declare
static void cmp_node_combyuva_declare(NodeDeclarationBuilder &b)
Definition
node_composite_sepcomb_yuva.cc:71
blender::nodes::node_composite_separate_yuva_cc
Definition
node_composite_sepcomb_yuva.cc:17
blender::nodes::node_composite_separate_yuva_cc::get_compositor_shader_node
static ShaderNode * get_compositor_shader_node(DNode node)
Definition
node_composite_sepcomb_yuva.cc:45
blender::nodes::node_composite_separate_yuva_cc::cmp_node_sepyuva_declare
static void cmp_node_sepyuva_declare(NodeDeclarationBuilder &b)
Definition
node_composite_sepcomb_yuva.cc:19
blender::realtime_compositor
Definition
BKE_node.hh:80
register_node_type_cmp_sepyuva
void register_node_type_cmp_sepyuva()
Definition
node_composite_sepcomb_yuva.cc:52
register_node_type_cmp_combyuva
void register_node_type_cmp_combyuva()
Definition
node_composite_sepcomb_yuva.cc:119
cmp_node_type_base
void cmp_node_type_base(blender::bke::bNodeType *ntype, int type, const char *name, short nclass)
Definition
node_composite_util.cc:31
node_composite_util.hh
outputs
static blender::bke::bNodeSocketTemplate outputs[]
Definition
node_texture_at.cc:16
inputs
static blender::bke::bNodeSocketTemplate inputs[]
Definition
node_texture_at.cc:11
min
#define min(a, b)
Definition
sort.c:32
GPUMaterial
Definition
gpu_material.cc:71
GPUNodeStack
Definition
GPU_material.hh:96
blender::bke::bNodeType
Defines a node type.
Definition
BKE_node.hh:218
blender::bke::bNodeType::gather_link_search_ops
NodeGatherSocketLinkOperationsFunction gather_link_search_ops
Definition
BKE_node.hh:363
blender::bke::bNodeType::declare
NodeDeclareFunction declare
Definition
BKE_node.hh:347
blender::bke::bNodeType::get_compositor_shader_node
NodeGetCompositorShaderNodeFunction get_compositor_shader_node
Definition
BKE_node.hh:328
Generated on Sat Oct 4 2025 05:32:23 for Blender by
doxygen
1.14.0