56 render_data_(render_data),
57 modifier_data_(modifier_data),
58 image_buffer_(image_buffer),
59 mask_buffer_(mask_buffer),
71 return result_translation_;
76 return *render_data_.scene;
87 if (!render_data_.render) {
112 if (domain.
size.x != image_buffer_->x || domain.
size.y != image_buffer_->y) {
116 image_buffer_->x = domain.
size.x;
117 image_buffer_->y = domain.
size.y;
120 result.wrap_external(image_buffer_->float_buffer.data,
121 int2(image_buffer_->x, image_buffer_->y));
137 if (
name ==
"Image") {
138 result.wrap_external(image_buffer_->float_buffer.data,
139 int2(image_buffer_->x, image_buffer_->y));
141 else if (
name ==
"Mask" && mask_buffer_) {
142 result.wrap_external(mask_buffer_->float_buffer.data,
143 int2(mask_buffer_->x, mask_buffer_->y));
144 result.set_transformation(xform_);
216 const bool was_byte = context.image->float_buffer.data ==
nullptr;
219 context.render_data, modifier_data, context.image, linear_mask, context.strip);
225 if (
mask != linear_mask) {
229 if (was_float_linear) {
253 "NODE_OT_new_compositor_sequencer_node_group",
258 C,
ptr,
"open_mask_input_panel",
IFACE_(
"Mask Input")))
273 "SequencerCompositorModifierData",
#define CTX_N_(context, msgid)
#define BLT_I18NCONTEXT_ID_SEQUENCE
T * DEG_get_evaluated(const Depsgraph *depsgraph, T *id)
@ eSeqModifierType_Compositor
void IMB_colormanagement_assign_float_colorspace(ImBuf *ibuf, const char *name)
bool IMB_colormanagement_space_is_scene_linear(const ColorSpace *colorspace)
void IMB_colormanagement_transform_float(float *buffer, int width, int height, int channels, const char *from_colorspace, const char *to_colorspace, bool predivide)
@ COLOR_ROLE_SCENE_LINEAR
const char * IMB_colormanagement_role_colorspace_name_get(int role)
const char * IMB_colormanagement_get_float_colorspace(const ImBuf *ibuf)
ImBuf * IMB_dupImBuf(const ImBuf *ibuf1)
void IMB_byte_from_float(ImBuf *ibuf)
void IMB_free_all_data(ImBuf *ibuf)
void IMB_freeImBuf(ImBuf *ibuf)
void IMB_free_float_pixels(ImBuf *ibuf)
bool IMB_alloc_float_pixels(ImBuf *ibuf, const unsigned int channels, bool initialize_pixels=true)
void IMB_float_from_byte(ImBuf *ibuf)
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)
PointerRNA * UI_panel_custom_data_get(const Panel *panel)
Result create_result(ResultType type, ResultPrecision precision)
bool use_gpu() const override
const bNodeTree & get_node_tree() const override
CompositorContext(const RenderData &render_data, const SequencerCompositorModifierData *modifier_data, ImBuf *image_buffer, ImBuf *mask_buffer, const Strip &strip)
bool treat_viewer_as_compositor_output() const override
bool use_context_bounds_for_input_output() const override
compositor::Result get_input(StringRef name) override
Bounds< int2 > get_compositing_region() const override
compositor::Result get_output(compositor::Domain domain) override
compositor::Result get_viewer_output(compositor::Domain domain, bool, compositor::ResultPrecision) override
const Scene & get_scene() const override
float2 get_result_translation() const
compositor::OutputTypes needed_outputs() const override
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
CartesianBasis invert(const CartesianBasis &basis)
void seq_imbuf_to_sequencer_space(const Scene *scene, ImBuf *ibuf, bool make_float)
float3x3 image_transform_matrix_get(const Scene *scene, const Strip *strip)
void draw_mask_input_type_settings(const bContext *C, uiLayout *layout, PointerRNA *ptr)
StripModifierTypeInfo seqModifierType_Compositor
static bool is_linear_float_buffer(ImBuf *image_buffer)
static void compositor_modifier_panel_draw(const bContext *C, Panel *panel)
static void compositor_modifier_register(ARegionType *region_type)
static bool ensure_linear_float_buffer(ImBuf *ibuf)
static void compositor_modifier_init_data(StripModifierData *strip_modifier_data)
static void compositor_modifier_apply(ModifierApplyContext &context, StripModifierData *strip_modifier_data, ImBuf *mask)
PanelType * modifier_panel_register(ARegionType *region_type, const eStripModifierType type, PanelDrawFn draw)
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
MatBase< float, 3, 3 > float3x3
const ColorSpace * colorspace
ImBufFloatBuffer float_buffer
struct bNodeTree * node_group
PanelLayout panel_prop(const bContext *C, PointerRNA *open_prop_owner, blender::StringRefNull open_prop_name)
void use_property_split_set(bool value)