Blender V4.5
node_composite_sepcomb_rgba.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
10
12
13#include "NOD_multi_function.hh"
14
15#include "GPU_material.hh"
16
18
19/* **************** SEPARATE RGBA ******************** */
20
22
24{
25 b.add_input<decl::Color>("Image")
26 .default_value({1.0f, 1.0f, 1.0f, 1.0f})
27 .compositor_domain_priority(0);
28 b.add_output<decl::Float>("R").translation_context(BLT_I18NCONTEXT_COLOR);
29 b.add_output<decl::Float>("G").translation_context(BLT_I18NCONTEXT_COLOR);
30 b.add_output<decl::Float>("B").translation_context(BLT_I18NCONTEXT_COLOR);
31 b.add_output<decl::Float>("A").translation_context(BLT_I18NCONTEXT_COLOR);
32}
33
34using namespace blender::compositor;
35
36static int node_gpu_material(GPUMaterial *material,
37 bNode *node,
38 bNodeExecData * /*execdata*/,
41{
42 return GPU_stack_link(material, node, "node_composite_separate_rgba", inputs, outputs);
43}
44
46{
47 static auto function = mf::build::SI1_SO4<float4, float, float, float, float>(
48 "Separate Color RGBA",
49 [](const float4 &color, float &r, float &g, float &b, float &a) -> void {
50 r = color.x;
51 g = color.y;
52 b = color.z;
53 a = color.w;
54 },
55 mf::build::exec_presets::AllSpanOrSingle());
56 builder.set_matching_fn(function);
57}
58
59} // namespace blender::nodes::node_composite_separate_rgba_cc
60
62{
64
65 static blender::bke::bNodeType ntype;
66
67 cmp_node_type_base(&ntype, "CompositorNodeSepRGBA", CMP_NODE_SEPRGBA_LEGACY);
68 ntype.ui_name = "Separate RGBA (Legacy)";
69 ntype.ui_description = "Deprecated";
70 ntype.enum_name_legacy = "SEPRGBA";
72 ntype.declare = file_ns::cmp_node_seprgba_declare;
73 ntype.gather_link_search_ops = nullptr;
74 ntype.gpu_fn = file_ns::node_gpu_material;
75 ntype.build_multi_function = file_ns::node_build_multi_function;
76
78}
80
81/* **************** COMBINE RGBA ******************** */
82
84
86{
87 b.add_input<decl::Float>("R")
88 .min(0.0f)
89 .max(1.0f)
91 .translation_context(BLT_I18NCONTEXT_COLOR);
92 b.add_input<decl::Float>("G")
93 .min(0.0f)
94 .max(1.0f)
96 .translation_context(BLT_I18NCONTEXT_COLOR);
97 b.add_input<decl::Float>("B")
98 .min(0.0f)
99 .max(1.0f)
101 .translation_context(BLT_I18NCONTEXT_COLOR);
102 b.add_input<decl::Float>("A")
103 .default_value(1.0f)
104 .min(0.0f)
105 .max(1.0f)
107 .translation_context(BLT_I18NCONTEXT_COLOR);
108 b.add_output<decl::Color>("Image");
109}
110
111using namespace blender::compositor;
112
113static int node_gpu_material(GPUMaterial *material,
114 bNode *node,
115 bNodeExecData * /*execdata*/,
118{
119 return GPU_stack_link(material, node, "node_composite_combine_rgba", inputs, outputs);
120}
121
123{
124 static auto function = mf::build::SI4_SO<float, float, float, float, float4>(
125 "Combine Color RGBA",
126 [](const float r, const float g, const float b, const float a) -> float4 {
127 return float4(r, g, b, a);
128 },
129 mf::build::exec_presets::Materialized());
130 builder.set_matching_fn(function);
131}
132
133} // namespace blender::nodes::node_composite_combine_rgba_cc
134
136{
138
139 static blender::bke::bNodeType ntype;
140
141 cmp_node_type_base(&ntype, "CompositorNodeCombRGBA", CMP_NODE_COMBRGBA_LEGACY);
142 ntype.ui_name = "Combine RGBA (Legacy)";
143 ntype.ui_description = "Deprecated";
144 ntype.enum_name_legacy = "COMBRGBA";
146 ntype.declare = file_ns::cmp_node_combrgba_declare;
147 ntype.gather_link_search_ops = nullptr;
148 ntype.gpu_fn = file_ns::node_gpu_material;
149 ntype.build_multi_function = file_ns::node_build_multi_function;
150
152}
#define NODE_CLASS_CONVERTER
Definition BKE_node.hh:439
#define CMP_NODE_SEPRGBA_LEGACY
#define CMP_NODE_COMBRGBA_LEGACY
#define BLT_I18NCONTEXT_COLOR
bool GPU_stack_link(GPUMaterial *mat, const bNode *node, const char *name, GPUNodeStack *in, GPUNodeStack *out,...)
#define NOD_REGISTER_NODE(REGISTER_FUNC)
void set_matching_fn(const mf::MultiFunction *fn)
VecBase< float, 4 > float4
void node_register_type(bNodeType &ntype)
Definition node.cc:2748
static int node_gpu_material(GPUMaterial *material, bNode *node, bNodeExecData *, GPUNodeStack *inputs, GPUNodeStack *outputs)
static void node_build_multi_function(blender::nodes::NodeMultiFunctionBuilder &builder)
static void cmp_node_combrgba_declare(NodeDeclarationBuilder &b)
static int node_gpu_material(GPUMaterial *material, bNode *node, bNodeExecData *, GPUNodeStack *inputs, GPUNodeStack *outputs)
static void cmp_node_seprgba_declare(NodeDeclarationBuilder &b)
static void node_build_multi_function(blender::nodes::NodeMultiFunctionBuilder &builder)
VecBase< float, 4 > float4
static void register_node_type_cmp_combrgba()
static void register_node_type_cmp_seprgba()
void cmp_node_type_base(blender::bke::bNodeType *ntype, std::string idname, const std::optional< int16_t > legacy_type)
static blender::bke::bNodeSocketTemplate outputs[]
static blender::bke::bNodeSocketTemplate inputs[]
#define min(a, b)
Definition sort.cc:36
Defines a node type.
Definition BKE_node.hh:226
std::string ui_description
Definition BKE_node.hh:232
NodeGPUExecFunction gpu_fn
Definition BKE_node.hh:330
NodeMultiFunctionBuildFunction build_multi_function
Definition BKE_node.hh:344
const char * enum_name_legacy
Definition BKE_node.hh:235
NodeGatherSocketLinkOperationsFunction gather_link_search_ops
Definition BKE_node.hh:371
NodeDeclareFunction declare
Definition BKE_node.hh:355