14 gausstab_sse_ =
nullptr;
49 gausstab_sse_ =
nullptr;
55 const rcti &output_area,
63 r_input_area = output_area;
85 __m128 accumulated_color_sse = _mm_setzero_ps();
87 const int2 offset = unit_offset * i;
89 __m128 color = _mm_load_ps(input->get_elem_clamped(it.x + offset.x, it.y + offset.y));
90 __m128 weighted_color = _mm_mul_ps(color, weight);
91 accumulated_color_sse = _mm_add_ps(accumulated_color_sse, weighted_color);
93 _mm_store_ps(accumulated_color, accumulated_color_sse);
96 const int2 offset = unit_offset * i;
98 const float4 color = input->get_elem_clamped(it.x + offset.x, it.y + offset.y);
99 accumulated_color += color * weight;
MINLINE float max_ff(float a, float b)
MINLINE int min_ii(int a, int b)
MINLINE float min_ff(float a, float b)
MINLINE void copy_v4_v4(float r[4], const float a[4])
#define MAX_GAUSSTAB_RADIUS
float * make_gausstab(float rad, int size)
int get_blur_size(eDimension dim) const
virtual 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.
virtual void init_data() override
static constexpr int IMAGE_INPUT_INDEX
virtual void init_execution() override
virtual void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
virtual void init_data() override
GaussianBlurBaseOperation(eDimension dim)
virtual void deinit_execution() 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
virtual void init_execution()
virtual void deinit_execution()
DataType
possible data types for sockets
void MEM_freeN(void *vmemh)
ccl_device_inline float3 ceil(const float3 a)
typename BuffersIteratorBuilder< T >::Iterator BuffersIterator
VecBase< float, 4 > float4
VecBase< int32_t, 2 > int2