24 N_(
"The kernel is a float and will be convolved with all input channels")},
29 N_(
"The kernel is a color and each channel of the kernel will be convolved with each "
30 "respective channel in the input")},
31 {0,
nullptr, 0,
nullptr,
nullptr},
36 b.use_custom_socket_order();
37 b.allow_any_socket_order();
39 b.add_output<
decl::Color>(
"Image").structure_type(StructureType::Dynamic).align_with_previous();
57 .
description(
"Normalizes the kernel such that it integrates to one");
97 const MenuValue menu_value =
input.get_single_value_default(default_menu_value);
#define NODE_CLASS_OP_FILTER
#define BLI_assert_unreachable()
#define NOD_REGISTER_NODE(REGISTER_FUNC)
NodeOperation(Context &context, DNode node)
Result & get_result(StringRef identifier)
Context & context() const
Result & get_input(StringRef identifier) const
T get_single_value_default(const T &default_value) const
bool is_single_value() const
StructureType structure_type
const Result & get_kernel_input()
bool get_normalize_kernel()
KernelDataType get_kernel_data_type()
NodeOperation(Context &context, DNode node)
void node_register_type(bNodeType &ntype)
void convolve(Context &context, const Result &input, const Result &kernel, Result &output, const bool normalize_kernel)
static void node_register()
static void node_declare(NodeDeclarationBuilder &b)
static const EnumPropertyItem kernel_data_type_items[]
static NodeOperation * get_compositor_operation(Context &context, DNode node)
void cmp_node_type_base(blender::bke::bNodeType *ntype, std::string idname, const std::optional< int16_t > legacy_type)
std::string ui_description
NodeGetCompositorOperationFunction get_compositor_operation
NodeDeclareFunction declare