15 input_color_program_ =
nullptr;
16 input_determinator_program_ =
nullptr;
30 float determinator_reference_color[4];
31 float determinator[4];
37 int minx =
floor(
x - space);
38 int maxx =
ceil(
x + space);
39 int miny =
floor(
y - space);
40 int maxy =
ceil(
y + space);
42 input_determinator_program_->
read(determinator_reference_color,
x,
y,
data);
53 input_determinator_program_->
read(determinator, xi, yi,
data);
54 delta_color = (
fabsf(determinator_reference_color[0] - determinator[0]) +
55 fabsf(determinator_reference_color[1] - determinator[1]) +
57 fabsf(determinator_reference_color[2] - determinator[2]));
58 if (delta_color < sigmacolor) {
60 input_color_program_->
read(temp_color, xi, yi,
data);
67 if (blur_divider > 0.0f) {
80 input_color_program_ =
nullptr;
81 input_determinator_program_ =
nullptr;
99 const rcti &output_area,
102 const int add =
ceil(space_) + 1;
124 float blur_divider = 0.0f;
142 blur_divider += 1.0f;
147 if (blur_divider > 0.0f) {
164 const float space = space_;
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 mul_v4_v4fl(float r[4], const float a[4], float f)
MINLINE void zero_v4(float r[4])
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
void deinit_execution() override
void init_execution() override
bool determine_depending_area_of_interest(rcti *input, ReadBufferOperation *read_operation, rcti *output) override
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
void execute_pixel(float output[4], int x, int y, void *data) 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 of a chunk
void read(float *result, int x, int y, MemoryBufferExtend extend_x=MemoryBufferExtend::Clip, MemoryBufferExtend extend_y=MemoryBufferExtend::Clip)
float * get_elem(int x, int y)
void add_output_socket(DataType datatype)
SocketReader * get_input_socket_reader(unsigned int index)
NodeOperationFlags flags_
void read(float result[4], int x, int y, void *chunk_data)
virtual bool determine_depending_area_of_interest(rcti *input, ReadBufferOperation *read_operation, rcti *output)
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
void init_execution(QualityHelper helper)
ccl_global KernelShaderEvalInput ccl_global float * output
ccl_global KernelShaderEvalInput * input
ccl_device_inline float3 ceil(const float3 &a)
bool add(void *owner, const AttributeIDRef &attribute_id, eAttrDomain domain, eCustomDataType data_type, const AttributeInit &initializer)
static void area(int d1, int d2, int e1, int e2, float weights[2])
static void blur_pixel(PixelCursor &p)
constexpr float COM_COLOR_BLACK[4]
static bNodeSocketTemplate inputs[]
const float * determ_reference_color
MemoryBuffer * input_color
MemoryBuffer * input_determinator