25 {0,
"SCENE", 0,
"Scene Size",
""},
31 N_(
"Pixel size scaled by scene percentage")},
32 {0,
nullptr, 0,
nullptr,
nullptr},
37 b.use_custom_socket_order();
39 b.add_output<
decl::Float>(
"Mask").structure_type(StructureType::Dynamic);
49 .description(
"The source where the size of the mask is retrieved");
53 .usage_by_menu(
"Size Source",
55 .description(
"The resolution of the mask along the X direction");
59 .usage_by_menu(
"Size Source",
61 .description(
"The resolution of the mask along the Y direction");
63 "Use feather information from the mask");
69 .
description(
"Use multi-sampled motion blur of the mask");
80 .description(
"Exposure for motion blur as a factor of FPS");
112 this->get_aspect_ratio(),
113 this->get_use_feather(),
114 this->get_motion_blur_samples(),
115 this->get_motion_blur_shutter());
167 this->
get_input(
"Motion Blur Samples").get_single_value_default(16), 1, 64);
174 this->
get_input(
"Motion Blur Shutter").get_single_value_default(0.5f), 0.0f, 1.0f);
186 const MenuValue menu_value =
input.get_single_value_default(default_menu_value);
211 ntype.
ui_description =
"Input mask from a mask data-block, created in the image editor";
214 ntype.
declare = file_ns::cmp_node_mask_declare;
215 ntype.
labelfunc = file_ns::node_mask_label;
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
@ CMP_NODE_MASK_FLAG_SIZE_FIXED
@ CMP_NODE_MASK_FLAG_SIZE_FIXED_SCENE
#define NOD_REGISTER_NODE(REGISTER_FUNC)
void uiTemplateID(uiLayout *layout, const bContext *C, PointerRNA *ptr, blender::StringRefNull propname, const char *newop, const char *openop, const char *unlinkop, int filter=UI_TEMPLATE_ID_FILTER_ALL, bool live_icon=false, std::optional< blender::StringRef > text=std::nullopt)
Result & get(Context &context, Mask *mask, int2 size, float aspect_ratio, bool use_feather, int motion_blur_samples, float motion_blur_shutter)
StaticCacheManager & cache_manager()
float get_render_percentage() const
int2 get_compositing_region_size() const
virtual const RenderData & get_render_data() const
const bNode & bnode() const
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
void wrap_external(blender::gpu::Texture *texture)
CachedMaskContainer cached_masks
DeclType::Builder & add_input(StringRef name, StringRef identifier="")
int get_motion_blur_samples()
float get_motion_blur_shutter()
Domain compute_domain() override
CMPNodeMaskFlags get_flags()
NodeOperation(Context &context, DNode node)
void node_register_type(bNodeType &ntype)
T clamp(const T &a, const T &min, const T &max)
T max(const T &a, const T &b)
static void cmp_node_mask_declare(NodeDeclarationBuilder &b)
static const EnumPropertyItem size_source_items[]
static void node_mask_label(const bNodeTree *, const bNode *node, char *label, int label_maxncpy)
static NodeOperation * get_compositor_operation(Context &context, DNode node)
VecBase< int32_t, 2 > int2
static void register_node_type_cmp_mask()
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
void(* labelfunc)(const bNodeTree *ntree, const bNode *node, char *label, int label_maxncpy)
const char * enum_name_legacy
NodeDeclareFunction declare