18 const rcti &output_area,
21 const int add = radius_ + 1;
44 float blur_divider = 0.0f;
67 if (blur_divider > 0.0f) {
85 for (
int y = area.ymin; y < area.ymax; y++) {
86 p.
out = output->get_elem(area.xmin, y);
88 for (
int x = area.xmin; x < area.xmax; x++) {
93 p.
out += output->elem_stride;
MINLINE void mul_v4_fl(float r[4], float f)
MINLINE void add_v4_v4(float r[4], const float a[4])
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void zero_v4(float r[4])
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
void get_area_of_interest(int input_idx, const rcti &output_area, rcti &r_input_area) override
Get input operation area being read by this operation on rendering given output area.
a MemoryBuffer contains access to the data
float * get_elem(int x, int y)
void read_elem_clamped(int x, int y, float *out) const
void add_output_socket(DataType datatype)
NodeOperationFlags flags_
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
static void add(blender::Map< std::string, std::string > &messages, Message &msg)
static void blur_pixel(PixelCursor &p)
constexpr float COM_COLOR_BLACK[4]
const float * determ_reference_color
MemoryBuffer * input_color
MemoryBuffer * input_determinator