29 const int buffer_width = input_buffer->
get_width();
36 for (
int cx = start; cx < end; cx++) {
37 int buffer_index = (
y * buffer_width + cx);
44 for (
int cy = start; cy < end; cy++) {
45 int buffer_index = (cy * buffer_width +
x);
79 const rcti &output_area,
85 r_input_area.
ymin = output_area.
ymin;
87 r_input_area.
ymax = output_area.
ymax;
90 r_input_area.
xmin = output_area.
xmin;
92 r_input_area.
xmax = output_area.
xmax;
110 std::function<int()> get_current_coord;
113 get_current_coord = [&] {
return it.x; };
115 elem_stride =
input->elem_stride;
118 get_current_coord = [&] {
return it.y; };
120 elem_stride =
input->row_stride;
124 for (; !it.is_end(); ++it) {
125 const int coord = get_current_coord();
126 const int start_coord =
MAX2(0, coord -
size_ + 1);
127 const int end_coord =
MIN2(coord_max, coord +
size_);
128 const int count = end_coord - start_coord;
131 const float *start = it.in(0) + (start_coord - coord) * elem_stride;
132 const float *end = start +
count * elem_stride;
133 for (
const float *elem = start; elem < end; elem += elem_stride) {
typedef float(TangentPoint)[2]
#define BLI_assert_msg(a, msg)
_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
static T sum(const btAlignedObjectArray< T > &items)
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
bool determine_depending_area_of_interest(rcti *input, ReadBufferOperation *read_operation, rcti *output) 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.
void execute_pixel(float output[4], int x, int y, void *data) override
calculate a single pixel
void * initialize_tile_data(rcti *rect) override
a MemoryBuffer contains access to the data of a chunk
const int get_width() const
get the width of this MemoryBuffer
const int get_height() const
get the height of this MemoryBuffer
float * get_buffer()
get the data of this MemoryBuffer
unsigned int get_height() const
void add_output_socket(DataType datatype)
unsigned int get_width() const
NodeOperationFlags flags_
NodeOperation * get_input_operation(int index)
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)
virtual void * initialize_tile_data(rcti *)
ccl_global float * buffer
ccl_global KernelShaderEvalInput ccl_global float * output
ccl_global KernelShaderEvalInput * input
ccl_device_inline float average(const float2 &a)
static void area(int d1, int d2, int e1, int e2, float weights[2])
typename BuffersIteratorBuilder< T >::Iterator BuffersIterator
static bNodeSocketTemplate inputs[]