28 b.use_custom_socket_order();
40 .
description(
"The resolution of the mask along the X direction")
41 .compositor_expects_single_value();
45 .
description(
"The resolution of the mask along the Y direction")
46 .compositor_expects_single_value();
49 .
description(
"Use feather information from the mask")
50 .compositor_expects_single_value();
56 .
description(
"Use multi-sampled motion blur of the mask")
57 .compositor_expects_single_value();
63 .compositor_expects_single_value();
69 .description(
"Exposure for motion blur as a factor of FPS")
70 .compositor_expects_single_value();
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);
208 ntype.
ui_description =
"Input mask from a mask datablock, created in the image editor";
211 ntype.
declare = file_ns::cmp_node_mask_declare;
213 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)
@ UI_ITEM_R_SPLIT_EMPTY_NAME
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()
virtual const RenderData & get_render_data() const =0
float get_render_percentage() const
int2 get_compositing_region_size() 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(GPUTexture *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)
bNodeSocket * node_find_socket(bNode &node, eNodeSocketInOut in_out, StringRef identifier)
void node_register_type(bNodeType &ntype)
void node_set_socket_availability(bNodeTree &ntree, bNodeSocket &sock, bool is_available)
T clamp(const T &a, const T &min, const T &max)
T max(const T &a, const T &b)
static void node_update(bNodeTree *ntree, bNode *node)
static void cmp_node_mask_declare(NodeDeclarationBuilder &b)
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
void(* updatefunc)(bNodeTree *ntree, bNode *node)
void prop(PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, std::optional< blender::StringRef > name_opt, int icon, std::optional< blender::StringRef > placeholder=std::nullopt)