Blender
V4.5
source
blender
nodes
composite
nodes
node_composite_sepcomb_xyz.cc
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2021 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
9
#include "
BLI_math_vector_types.hh
"
10
11
#include "
FN_multi_function_builder.hh
"
12
13
#include "
NOD_multi_function.hh
"
14
15
#include "
GPU_material.hh
"
16
17
#include "
node_composite_util.hh
"
18
19
/* **************** SEPARATE XYZ ******************** */
20
21
namespace
blender::nodes::node_composite_separate_xyz_cc
{
22
23
static
void
cmp_node_separate_xyz_declare
(
NodeDeclarationBuilder
&
b
)
24
{
25
b
.add_input<
decl::Vector
>(
"Vector"
).
min
(-10000.0f).max(10000.0f);
26
b
.add_output<
decl::Float
>(
"X"
);
27
b
.add_output<
decl::Float
>(
"Y"
);
28
b
.add_output<
decl::Float
>(
"Z"
);
29
}
30
31
using namespace
blender::compositor
;
32
33
static
int
node_gpu_material
(
GPUMaterial
*
material
,
34
bNode
*
node
,
35
bNodeExecData
*
/*execdata*/
,
36
GPUNodeStack
*
inputs
,
37
GPUNodeStack
*
outputs
)
38
{
39
return
GPU_stack_link
(
material
,
node
,
"node_composite_separate_xyz"
,
inputs
,
outputs
);
40
}
41
42
static
void
node_build_multi_function
(
blender::nodes::NodeMultiFunctionBuilder
&builder)
43
{
44
static
auto
function = mf::build::SI1_SO3<float3, float, float, float>(
45
"Separate XYZ"
,
46
[](
const
float3
&
vector
,
float
&
x
,
float
&
y
,
float
&
z
) ->
void
{
47
x
=
vector
.x;
48
y
=
vector
.y;
49
z
=
vector
.z;
50
},
51
mf::build::exec_presets::AllSpanOrSingle());
52
builder.
set_matching_fn
(function);
53
}
54
55
}
// namespace blender::nodes::node_composite_separate_xyz_cc
56
57
static
void
register_node_type_cmp_separate_xyz
()
58
{
59
namespace
file_ns =
blender::nodes::node_composite_separate_xyz_cc
;
60
61
static
blender::bke::bNodeType
ntype;
62
63
cmp_node_type_base
(&ntype,
"CompositorNodeSeparateXYZ"
,
CMP_NODE_SEPARATE_XYZ
);
64
ntype.
ui_name
=
"Separate XYZ"
;
65
ntype.
ui_description
=
"Split a vector into its individual components"
;
66
ntype.
enum_name_legacy
=
"SEPARATE_XYZ"
;
67
ntype.
nclass
=
NODE_CLASS_CONVERTER
;
68
ntype.
declare
= file_ns::cmp_node_separate_xyz_declare;
69
ntype.
gpu_fn
= file_ns::node_gpu_material;
70
ntype.
build_multi_function
= file_ns::node_build_multi_function;
71
ntype.
gather_link_search_ops
=
nullptr
;
72
73
blender::bke::node_register_type
(ntype);
74
}
75
NOD_REGISTER_NODE
(
register_node_type_cmp_separate_xyz
)
76
77
/* **************** COMBINE XYZ ******************** */
78
79
namespace
blender
::nodes::node_composite_combine_xyz_cc {
80
81
static
void
cmp_node_combine_xyz_declare
(
NodeDeclarationBuilder
&
b
)
82
{
83
b
.add_input<
decl::Float
>(
"X"
).
min
(-10000.0f).max(10000.0f);
84
b
.add_input<
decl::Float
>(
"Y"
).
min
(-10000.0f).max(10000.0f);
85
b
.add_input<
decl::Float
>(
"Z"
).
min
(-10000.0f).max(10000.0f);
86
b
.add_output<
decl::Vector
>(
"Vector"
);
87
}
88
89
using namespace
blender::compositor
;
90
91
static
int
node_gpu_material(
GPUMaterial
*
material
,
92
bNode
*
node
,
93
bNodeExecData
*
/*execdata*/
,
94
GPUNodeStack
*
inputs
,
95
GPUNodeStack
*
outputs
)
96
{
97
return
GPU_stack_link
(
material
,
node
,
"node_composite_combine_xyz"
,
inputs
,
outputs
);
98
}
99
100
static
void
node_build_multi_function(
blender::nodes::NodeMultiFunctionBuilder
&builder)
101
{
102
static
auto
function = mf::build::SI3_SO<float, float, float, float3>(
103
"Combine XYZ"
,
104
[](
const
float
x
,
const
float
y
,
const
float
z
) ->
float3
{
return
float3
(
x
,
y
,
z
); },
105
mf::build::exec_presets::Materialized());
106
builder.
set_matching_fn
(function);
107
}
108
109
}
// namespace blender::nodes::node_composite_combine_xyz_cc
110
111
static
void
register_node_type_cmp_combine_xyz
()
112
{
113
namespace
file_ns =
blender::nodes::node_composite_combine_xyz_cc
;
114
115
static
blender::bke::bNodeType
ntype;
116
117
cmp_node_type_base
(&ntype,
"CompositorNodeCombineXYZ"
,
CMP_NODE_COMBINE_XYZ
);
118
ntype.
ui_name
=
"Combine XYZ"
;
119
ntype.
ui_description
=
"Combine a vector from its individual components"
;
120
ntype.
enum_name_legacy
=
"COMBINE_XYZ"
;
121
ntype.
nclass
=
NODE_CLASS_CONVERTER
;
122
ntype.
declare
= file_ns::cmp_node_combine_xyz_declare;
123
ntype.
gpu_fn
= file_ns::node_gpu_material;
124
ntype.
build_multi_function
= file_ns::node_build_multi_function;
125
ntype.
gather_link_search_ops
=
nullptr
;
126
127
blender::bke::node_register_type
(ntype);
128
}
129
NOD_REGISTER_NODE
(
register_node_type_cmp_combine_xyz
)
NODE_CLASS_CONVERTER
#define NODE_CLASS_CONVERTER
Definition
BKE_node.hh:439
CMP_NODE_COMBINE_XYZ
#define CMP_NODE_COMBINE_XYZ
Definition
BKE_node_legacy_types.hh:253
CMP_NODE_SEPARATE_XYZ
#define CMP_NODE_SEPARATE_XYZ
Definition
BKE_node_legacy_types.hh:252
x
x
Definition
BLI_expr_pylike_eval_test.cc:345
BLI_math_vector_types.hh
FN_multi_function_builder.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:825
NOD_multi_function.hh
NOD_REGISTER_NODE
#define NOD_REGISTER_NODE(REGISTER_FUNC)
Definition
NOD_register.hh:34
z
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
Definition
btQuadWord.h:117
blender::nodes::NodeDeclarationBuilder
Definition
NOD_node_declaration.hh:629
blender::nodes::NodeMultiFunctionBuilder
Definition
NOD_multi_function.hh:18
blender::nodes::NodeMultiFunctionBuilder::set_matching_fn
void set_matching_fn(const mf::MultiFunction *fn)
Definition
NOD_multi_function.hh:99
blender::nodes::decl::Float
Definition
NOD_socket_declarations.hh:19
blender::nodes::decl::Vector
Definition
NOD_socket_declarations.hh:77
vector
Definition
cycles/util/vector.h:20
y
y
Definition
compositor_morphological_blur_info.hh:22
b
b
Definition
compositor_morphological_distance_info.hh:24
node
OperationNode * node
Definition
deg_builder_cycle.cc:38
material
Material material
Definition
deg_eval_copy_on_write.cc:96
float3
VecBase< float, 3 > float3
Definition
gpu_glsl_cpp_stubs.hh:364
blender::bke::node_register_type
void node_register_type(bNodeType &ntype)
Definition
node.cc:2748
blender::compositor
Definition
BKE_node.hh:76
blender::nodes::node_composite_combine_xyz_cc
Definition
node_composite_sepcomb_xyz.cc:79
blender::nodes::node_composite_combine_xyz_cc::cmp_node_combine_xyz_declare
static void cmp_node_combine_xyz_declare(NodeDeclarationBuilder &b)
Definition
node_composite_sepcomb_xyz.cc:81
blender::nodes::node_composite_separate_xyz_cc
Definition
node_composite_sepcomb_xyz.cc:21
blender::nodes::node_composite_separate_xyz_cc::node_gpu_material
static int node_gpu_material(GPUMaterial *material, bNode *node, bNodeExecData *, GPUNodeStack *inputs, GPUNodeStack *outputs)
Definition
node_composite_sepcomb_xyz.cc:33
blender::nodes::node_composite_separate_xyz_cc::node_build_multi_function
static void node_build_multi_function(blender::nodes::NodeMultiFunctionBuilder &builder)
Definition
node_composite_sepcomb_xyz.cc:42
blender::nodes::node_composite_separate_xyz_cc::cmp_node_separate_xyz_declare
static void cmp_node_separate_xyz_declare(NodeDeclarationBuilder &b)
Definition
node_composite_sepcomb_xyz.cc:23
blender
Definition
ANIM_action.hh:36
register_node_type_cmp_separate_xyz
static void register_node_type_cmp_separate_xyz()
Definition
node_composite_sepcomb_xyz.cc:57
register_node_type_cmp_combine_xyz
static void register_node_type_cmp_combine_xyz()
Definition
node_composite_sepcomb_xyz.cc:111
cmp_node_type_base
void cmp_node_type_base(blender::bke::bNodeType *ntype, std::string idname, const std::optional< int16_t > legacy_type)
Definition
node_composite_util.cc:33
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.cc:36
GPUMaterial
Definition
gpu/intern/gpu_material.cc:60
GPUNodeStack
Definition
GPU_material.hh:272
bNodeExecData
Definition
node_util.hh:19
bNode
Definition
DNA_node_types.h:415
blender::VecBase< float, 3 >
blender::bke::bNodeType
Defines a node type.
Definition
BKE_node.hh:226
blender::bke::bNodeType::ui_description
std::string ui_description
Definition
BKE_node.hh:232
blender::bke::bNodeType::ui_name
std::string ui_name
Definition
BKE_node.hh:231
blender::bke::bNodeType::gpu_fn
NodeGPUExecFunction gpu_fn
Definition
BKE_node.hh:330
blender::bke::bNodeType::build_multi_function
NodeMultiFunctionBuildFunction build_multi_function
Definition
BKE_node.hh:344
blender::bke::bNodeType::nclass
short nclass
Definition
BKE_node.hh:239
blender::bke::bNodeType::enum_name_legacy
const char * enum_name_legacy
Definition
BKE_node.hh:235
blender::bke::bNodeType::gather_link_search_ops
NodeGatherSocketLinkOperationsFunction gather_link_search_ops
Definition
BKE_node.hh:371
blender::bke::bNodeType::declare
NodeDeclareFunction declare
Definition
BKE_node.hh:355
Generated on Fri Apr 3 2026 06:33:18 for Blender by
doxygen
1.11.0