60 for (
int y = area.ymin; y < area.ymax; y++) {
61 p.
out = output->get_elem(area.xmin, y);
62 p.
row_end = p.
out + width * output->elem_stride;
73 float value = p.
value[0];
77 const float value_m = 1.0f - value;
91 float value = p.
value[0];
110 float value = p.
value[0];
114 float value_m = 1.0f - value;
130 float value = p.
value[0];
134 const float value_m = 1.0f - value;
136 float tmp = value_m + value * p.
color2[0];
141 tmp = 1.0f - (1.0f - p.
color1[0]) / tmp;
142 p.
out[0] = std::clamp(tmp, 0.0f, 1.0f);
145 tmp = value_m + value * p.
color2[1];
150 tmp = 1.0f - (1.0f - p.
color1[1]) / tmp;
151 p.
out[1] = std::clamp(tmp, 0.0f, 1.0f);
154 tmp = value_m + value * p.
color2[2];
159 tmp = 1.0f - (1.0f - p.
color1[2]) / tmp;
160 p.
out[2] = std::clamp(tmp, 0.0f, 1.0f);
174 float value = p.
value[0];
178 const float value_m = 1.0f - value;
180 float colH, colS, colV;
184 float tmpr, tmpg, tmpb;
186 hsv_to_rgb(colH, colS, rV, &tmpr, &tmpg, &tmpb);
187 p.
out[0] = (value_m * p.
color1[0]) + (value * tmpr);
188 p.
out[1] = (value_m * p.
color1[1]) + (value * tmpg);
189 p.
out[2] = (value_m * p.
color1[2]) + (value * tmpb);
206 float value = p.
value[0];
210 float value_m = 1.0f - value;
226 float value = p.
value[0];
230 const float value_m = 1.0f - value;
246 float value = p.
value[0];
250 const float value_m = 1.0f - value;
272 float value = p.
value[0];
276 const float value_m = 1.0f - value;
278 if (p.
color2[0] != 0.0f) {
284 if (p.
color2[1] != 0.0f) {
290 if (p.
color2[2] != 0.0f) {
309 float value = p.
value[0];
315 if (p.
color1[0] != 0.0f) {
316 tmp = 1.0f - value * p.
color2[0];
329 if (p.
color1[1] != 0.0f) {
330 tmp = 1.0f - value * p.
color2[1];
343 if (p.
color1[2] != 0.0f) {
344 tmp = 1.0f - value * p.
color2[2];
369 const float value = p.
value[0];
377 glare_weight = 1.0f + value;
380 input_weight = 1.0f - value;
383 p.
out[0] = input_weight * std::max(p.
color1[0], 0.0f) + glare_weight * p.
color2[0];
384 p.
out[1] = input_weight * std::max(p.
color1[1], 0.0f) + glare_weight * p.
color2[1];
385 p.
out[2] = input_weight * std::max(p.
color1[2], 0.0f) + glare_weight * p.
color2[2];
398 float value = p.
value[0];
402 const float value_m = 1.0f - value;
404 float colH, colS, colV;
408 float tmpr, tmpg, tmpb;
410 hsv_to_rgb(colH, rS, rV, &tmpr, &tmpg, &tmpb);
411 p.
out[0] = value_m * p.
color1[0] + value * tmpr;
412 p.
out[1] = value_m * p.
color1[1] + value * tmpg;
413 p.
out[2] = value_m * p.
color1[2] + value * tmpb;
430 float value = p.
value[0];
434 float value_m = 1.0f - value;
450 float value = p.
value[0];
485 float value = p.
value[0];
489 const float value_m = 1.0f - value;
506 float value = p.
value[0];
510 const float value_m = 1.0f - value;
515 p.
out[0] = 1.0f - (value_m + 2.0f * value * (1.0f - p.
color2[0])) * (1.0f - p.
color1[0]);
521 p.
out[1] = 1.0f - (value_m + 2.0f * value * (1.0f - p.
color2[1])) * (1.0f - p.
color1[1]);
527 p.
out[2] = 1.0f - (value_m + 2.0f * value * (1.0f - p.
color2[2])) * (1.0f - p.
color1[2]);
542 float value = p.
value[0];
546 const float value_m = 1.0f - value;
551 float colH, colS, colV;
571 float value = p.
value[0];
575 const float value_m = 1.0f - value;
577 p.
out[0] = 1.0f - (value_m + value * (1.0f - p.
color2[0])) * (1.0f - p.
color1[0]);
578 p.
out[1] = 1.0f - (value_m + value * (1.0f - p.
color2[1])) * (1.0f - p.
color1[1]);
579 p.
out[2] = 1.0f - (value_m + value * (1.0f - p.
color2[2])) * (1.0f - p.
color1[2]);
592 float value = p.
value[0];
596 const float value_m = 1.0f - value;
600 scr = 1.0f - (1.0f - p.
color2[0]) * (1.0f - p.
color1[0]);
601 scg = 1.0f - (1.0f - p.
color2[1]) * (1.0f - p.
color1[1]);
602 scb = 1.0f - (1.0f - p.
color2[2]) * (1.0f - p.
color1[2]);
622 float value = p.
value[0];
641 float value = p.
value[0];
645 float value_m = 1.0f - value;
648 float colH, colS, colV;
MINLINE float max_ff(float a, float b)
MINLINE float min_ff(float a, float b)
void rgb_to_hsv(float r, float g, float b, float *r_h, float *r_s, float *r_v)
void hsv_to_rgb(float h, float s, float v, float *r_r, float *r_g, float *r_b)
MINLINE void copy_v3_v3(float r[3], const float a[3])
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
a MemoryBuffer contains access to the data
float * get_elem(int x, int y)
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) final
void set_use_clamp(bool value)
void clamp_if_needed(float color[4])
void determine_canvas(const rcti &preferred_area, rcti &r_area) override
bool use_value_alpha_multiply()
virtual void update_memory_buffer_row(PixelCursor &p)
void set_use_value_alpha_multiply(const bool value)
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void add_output_socket(DataType datatype)
NodeOperationFlags flags_
NodeOperationInput * get_input_socket(unsigned int index)
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
void set_canvas_input_index(unsigned int index)
set the index of the input socket that will determine the canvas of this operation
virtual void determine_canvas(const rcti &preferred_area, rcti &r_area)
constexpr rcti COM_AREA_NONE