16 float c1[4], c2[4], c3[4], c4[4];
27 memset(data, 0, size4 *
sizeof(
float));
29 for (a = 0.0f; a <
DEG2RADF(360.0f) && (!breaked); a += ang) {
30 const float an = a + settings->angle_ofs;
31 const float vx =
cos(
double(an)), vy = sin(
double(an));
32 for (n = 0; n < settings->iter && (!breaked); n++) {
33 const float p4 =
pow(4.0,
double(n));
34 const float vxp = vx * p4, vyp = vy * p4;
35 const float wt =
pow(
double(settings->fade),
double(p4));
38 const float cmo = 1.0f -
float(
pow(
double(settings->colmod),
double(n) + 1));
41 for (y = 0; y < tsrc.
get_height() && (!breaked); y++) {
42 for (x = 0; x < tsrc.
get_width(); x++, tdstcol += 4) {
49 c1[0] = c1[1] = c1[2] = 0;
64 tdstcol[0] = 0.5f * (tdstcol[0] + c1[0] + wt * (c2[0] + wt * (c3[0] + wt * c4[0])));
65 tdstcol[1] = 0.5f * (tdstcol[1] + c1[1] + wt * (c2[1] + wt * (c3[1] + wt * c4[1])));
66 tdstcol[2] = 0.5f * (tdstcol[2] + c1[2] + wt * (c2[2] + wt * (c3[2] + wt * c4[2])));
77 float factor = 1.0f /
float(6 - settings->iter);
78 for (
int i = 0; i < size4; i += 4) {
MINLINE void madd_v3_v3fl(float r[3], const float a[3], float f)
void generate_glare(float *data, MemoryBuffer *input_tile, const NodeGlare *settings) override
a MemoryBuffer contains access to the data
const rcti & get_rect() const
get the rect of this MemoryBuffer
void read(float *result, float x, float y, PixelSampler sampler=PixelSampler::Nearest, MemoryBufferExtend extend_x=MemoryBufferExtend::Clip, MemoryBufferExtend extend_y=MemoryBufferExtend::Clip) const
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
void read_bilinear(float *result, float x, float y, MemoryBufferExtend extend_x=MemoryBufferExtend::Clip, MemoryBufferExtend extend_y=MemoryBufferExtend::Clip) const
void clear()
clear the buffer. Make all pixels black transparent.
pow(value.r - subtrahend, 2.0)") .do_static_compilation(true)
draw_view in_light_buf[] float
ccl_device_inline float3 cos(float3 v)