61 for (; !it.is_end(); ++it) {
62 it.out[0] = it.out[1] = it.out[2] = *it.in(0);
82 output[0] = (input_color[0] + input_color[1] + input_color[2]) / 3.0f;
87 for (; !it.is_end(); ++it) {
88 const float *in = it.in(0);
89 it.out[0] = (in[0] + in[1] + in[2]) / 3.0f;
106 float input_color[4];
113 for (; !it.is_end(); ++it) {
138 for (; !it.is_end(); ++it) {
163 for (; !it.is_end(); ++it) {
164 it.out[0] = it.out[1] = it.out[2] = *it.in(0);
187 for (; !it.is_end(); ++it) {
213 for (; !it.is_end(); ++it) {
214 const float *in = it.in(0);
215 it.out[0] = (in[0] + in[1] + in[2]) / 3.0f;
248 float input_color[4];
253 input_color[0], input_color[1], input_color[2], &
color[0], &
color[1], &
color[2], mode_);
258 output[3] = input_color[3];
269 for (; !it.is_end(); ++it) {
270 const float *in = it.in(0);
271 rgb_to_ycc(in[0], in[1], in[2], &it.out[0], &it.out[1], &it.out[2], mode_);
308 float input_color[4];
316 input_color[0], input_color[1], input_color[2], &
output[0], &
output[1], &
output[2], mode_);
317 output[3] = input_color[3];
328 for (; !it.is_end(); ++it) {
329 const float *in = it.in(0);
332 in[0] * 255.0f, in[1] * 255.0f, in[2] * 255.0f, &it.out[0], &it.out[1], &it.out[2], mode_);
350 float input_color[4];
359 output[3] = input_color[3];
364 for (; !it.is_end(); ++it) {
365 const float *in = it.in(0);
384 float input_color[4];
393 output[3] = input_color[3];
398 for (; !it.is_end(); ++it) {
399 const float *in = it.in(0);
418 float input_color[4];
421 output[3] = input_color[3];
426 for (; !it.is_end(); ++it) {
427 const float *in = it.in(0);
446 float input_color[4];
452 output[3] = input_color[3];
457 for (; !it.is_end(); ++it) {
458 const float *in = it.in(0);
460 it.out[0] =
max_ff(it.out[0], 0.0f);
461 it.out[1] =
max_ff(it.out[1], 0.0f);
462 it.out[2] =
max_ff(it.out[2], 0.0f);
480 float input_color[4];
483 output[3] = input_color[3];
488 for (; !it.is_end(); ++it) {
489 const float *in = it.in(0);
508 float input_color[4];
514 output[3] = input_color[3];
519 for (; !it.is_end(); ++it) {
520 const float *in = it.in(0);
522 it.out[0] =
max_ff(it.out[0], 0.0f);
523 it.out[1] =
max_ff(it.out[1], 0.0f);
524 it.out[2] =
max_ff(it.out[2], 0.0f);
550 for (; !it.is_end(); ++it) {
576 for (; !it.is_end(); ++it) {
587 input_operation_ =
nullptr;
596 input_operation_ =
nullptr;
614 it.out[0] = it.in(0)[channel_];
628 input_channel1_operation_ =
nullptr;
629 input_channel2_operation_ =
nullptr;
630 input_channel3_operation_ =
nullptr;
631 input_channel4_operation_ =
nullptr;
644 input_channel1_operation_ =
nullptr;
645 input_channel2_operation_ =
nullptr;
646 input_channel3_operation_ =
nullptr;
647 input_channel4_operation_ =
nullptr;
656 if (input_channel1_operation_) {
660 if (input_channel2_operation_) {
664 if (input_channel3_operation_) {
668 if (input_channel4_operation_) {
679 it.out[0] = *it.in(0);
680 it.out[1] = *it.in(1);
681 it.out[2] = *it.in(2);
682 it.out[3] = *it.in(3);
MINLINE float max_ff(float a, float b)
void hsv_to_rgb_v(const float hsv[3], float r_rgb[3])
void rgb_to_hsv_v(const float rgb[3], float r_hsv[3])
#define BLI_YUV_ITU_BT709
#define BLI_YCC_JFIF_0_255
void hsl_to_rgb_v(const float hsl[3], float r_rgb[3])
void ycc_to_rgb(float y, float cb, float cr, float *r_r, float *r_g, float *r_b, int colorspace)
#define BLI_YCC_ITU_BT601
void rgb_to_ycc(float r, float g, float b, float *r_y, float *r_cb, float *r_cr, int colorspace)
void rgb_to_yuv(float r, float g, float b, float *r_y, float *r_u, float *r_v, int colorspace)
void yuv_to_rgb(float y, float u, float v, float *r_r, float *r_g, float *r_b, int colorspace)
void rgb_to_hsl_v(const float rgb[3], float r_hsl[3])
#define BLI_YCC_ITU_BT709
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
_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
BLI_INLINE float IMB_colormanagement_get_luminance(const float rgb[3])
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a color
ColorSceneLinear4f< eAlpha::Premultiplied > premultiply_alpha() const
ColorSceneLinear4f< eAlpha::Straight > unpremultiply_alpha() const
CombineChannelsOperation()
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
void deinit_execution() override
void init_execution() override
virtual void hash_output_params() override
void init_execution() override
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) final
SocketReader * input_operation_
void deinit_execution() override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertColorToBWOperation()
ConvertColorToValueOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
ConvertColorToVectorOperation()
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertHSLToRGBOperation()
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
ConvertHSVToRGBOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
ConvertPremulToStraightOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertRGBToHSLOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
ConvertRGBToHSVOperation()
ConvertRGBToYCCOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void hash_output_params() override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertRGBToYUVOperation()
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
ConvertStraightToPremulOperation()
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertValueToColorOperation()
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertValueToVectorOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
ConvertVectorToColorOperation()
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
ConvertVectorToValueOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void hash_output_params() override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
ConvertYCCToRGBOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
ConvertYUVToRGBOperation()
a MemoryBuffer contains access to the data of a chunk
void add_output_socket(DataType datatype)
SocketReader * get_input_socket_reader(unsigned int index)
NodeOperationFlags flags_
void read_sampled(float result[4], float x, float y, PixelSampler sampler)
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
void deinit_execution() override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
calculate a single pixel
void init_execution() override
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
SeparateChannelOperation()
depth_tx sampler(1, ImageType::FLOAT_2D, "combined_tx") .sampler(2
@ Vector
Vector data type.
ccl_global KernelShaderEvalInput ccl_global float * output
ccl_global KernelShaderEvalInput * input
static void area(int d1, int d2, int e1, int e2, float weights[2])
typename BuffersIteratorBuilder< T >::Iterator BuffersIterator
static bNodeSocketTemplate inputs[]