11 #define PASS_VECTOR_MAX 10000.0f
22 const float *zbufrect);
36 cached_instance_ =
nullptr;
37 input_image_program_ =
nullptr;
38 input_speed_program_ =
nullptr;
39 input_zprogram_ =
nullptr;
49 cached_instance_ =
nullptr;
63 input_image_program_ =
nullptr;
64 input_speed_program_ =
nullptr;
65 input_zprogram_ =
nullptr;
66 if (cached_instance_) {
68 cached_instance_ =
nullptr;
73 if (cached_instance_) {
74 return cached_instance_;
78 if (cached_instance_ ==
nullptr) {
84 cached_instance_ =
data;
87 return cached_instance_;
94 if (cached_instance_ ==
nullptr) {
118 if (!cached_instance_) {
120 const bool is_image_inflated =
image->is_a_single_elem();
128 const bool is_z_inflated =
z->is_a_single_elem();
129 z = is_z_inflated ?
z->inflate() :
z;
134 if (is_image_inflated) {
158 blurdata.
fac = settings_->
fac;
196 memset(zspan, 0,
sizeof(
ZSpan));
198 zspan->
rectx = rectx;
199 zspan->
recty = recty;
230 const float *minv, *maxv;
245 my2 =
floor(maxv[1]);
247 if (my2 < 0 || my0 >= zspan->
recty) {
252 if (my2 >= zspan->
recty) {
253 my2 = zspan->
recty - 1;
265 xx1 = maxv[1] - minv[1];
266 if (xx1 > FLT_EPSILON) {
267 dx0 = (minv[0] - maxv[0]) / xx1;
268 xs0 = dx0 * (minv[1] - my2) + minv[0];
272 xs0 =
min_ff(minv[0], maxv[0]);
276 if (zspan->
maxp1 ==
nullptr) {
280 if (maxv == zspan->
minp1 || minv == zspan->
maxp1) {
288 if (span == zspan->
span1) {
290 if (zspan->
minp1 ==
nullptr || zspan->
minp1[1] > minv[1]) {
293 if (zspan->
maxp1 ==
nullptr || zspan->
maxp1[1] < maxv[1]) {
296 if (my0 < zspan->miny1) {
299 if (my2 > zspan->
maxy1) {
305 if (zspan->
minp2 ==
nullptr || zspan->
minp2[1] > minv[1]) {
308 if (zspan->
maxp2 ==
nullptr || zspan->
maxp2[1] < maxv[1]) {
311 if (my0 < zspan->miny2) {
314 if (my2 > zspan->
maxy2) {
319 for (
y = my2;
y >= my0;
y--, xs0 += dx0) {
341 double zxd, zyd, zy0, zverg;
343 float x1,
y1, z1,
x2, y2, z2, xx1;
344 const float *span1, *span2;
345 float *rectzofs, *rz;
347 int sn1, sn2, rectx, my0, my2;
359 if (zspan->
minp2 ==
nullptr || zspan->
maxp2 ==
nullptr) {
378 x0 =
y1 * z2 - z1 * y2;
379 y0 = z1 *
x2 - x1 * z2;
380 z0 = x1 * y2 -
y1 *
x2;
386 xx1 = (x0 *
v1[0] + y0 *
v1[1]) / z0 +
v1[2];
388 zxd = -(
double)x0 / (
double)z0;
389 zyd = -(
double)y0 / (
double)z0;
393 rectx = zspan->
rectx;
394 rectzofs = (
float *)(zspan->
rectz + rectx * my2);
398 sn1 = (my0 + my2) / 2;
400 span1 = zspan->
span1 + my2;
401 span2 = zspan->
span2 + my2;
404 span1 = zspan->
span2 + my2;
405 span2 = zspan->
span1 + my2;
408 for (
y = my2;
y >= my0;
y--, span1--, span2--) {
422 zverg = (
double)sn1 * zxd + zy0;
428 if (zverg < (
double)*rz) {
450 char *row1, *row2, *row3;
455 for (
y = 2;
y < ysize;
y++) {
457 row1 = rectmove + (
y - 2) * xsize;
460 for (
x = 2;
x < xsize;
x++, row1++, row2++, row3++) {
462 if (row2[0] == 0 || row2[2] == 0 || row1[1] == 0 || row3[1] == 0) {
471 for (
y = 0;
y < ysize;
y++) {
473 for (
x = 1;
x < xsize;
x++, row1++) {
474 if (row1[0] == 128 && row1[1] == 128) {
478 while (
x + step < xsize && row1[step] == 128) {
482 if (
x + step != xsize) {
487 for (
a = 0;
a < step;
a++) {
490 fac = ((
a + 1) << 8) / (step + 1);
493 row1[
a] = (
prev * mfac +
next * fac) >> 8;
502 for (
x = 0;
x < xsize;
x++) {
503 row1 = rectmove +
x + xsize;
505 for (
y = 1;
y < ysize;
y++, row1 += xsize) {
506 if (row1[0] == 128 && row1[xsize] == 128) {
510 while (
y + step < ysize && row1[step * xsize] == 128) {
514 if (
y + step != ysize) {
516 next = row1[step * xsize];
518 for (
a = 0;
a < step;
a++) {
521 fac = ((
a + 1) << 8) / (step + 1);
524 row1[
a * xsize] = (
prev * mfac +
next * fac) >> 8;
532 for (
y = 2;
y < ysize;
y++) {
534 row1 = rectmove + (
y - 2) * xsize;
537 for (
x = 2;
x < xsize;
x++, row1++, row2++, row3++) {
539 if (row2[0] > 1 || row2[2] > 1 || row1[1] > 1 || row3[1] > 1) {
553 float p1[2], p2[2], p3[2];
562 p2[0] = -0.5f * p1[0] - 0.5f * p3[0];
563 p2[1] = -0.5f * p1[1] - 0.5f * p3[1];
565 result[0] = ipodata[0] * p1[0] + ipodata[1] * p2[0] + ipodata[2] * p3[0];
566 result[1] = ipodata[0] * p1[1] + ipodata[1] * p2[1] + ipodata[2] * p3[1];
571 float mfac = (1.0f - fac);
573 data[0] = mfac * mfac;
574 data[1] = 2.0f * mfac * fac;
582 const float *imgrect,
584 const float *zbufrect)
588 static float jit[256][2];
589 float v1[3],
v2[3], v3[3], v4[3], fx, fy;
590 const float *dimg, *dz, *ro;
591 float *rectvz, *dvz, *dvec1, *dvec2, *dz1, *dz2, *rectz;
592 float *minvecbufrect =
nullptr, *rectweight, *rw, *rectmax, *rm;
596 static int firsttime = 1;
606 rectz = (
float *)
MEM_callocN(
sizeof(
float) * xsize * ysize,
"zbuf accum");
607 zspan.
rectz = (
int *)rectz;
609 rectmove = (
char *)
MEM_callocN(xsize * ysize,
"rectmove");
613 rectweight = (
float *)
MEM_callocN(
sizeof(
float) * xsize * ysize,
"rect weight");
614 rectmax = (
float *)
MEM_callocN(
sizeof(
float) * xsize * ysize,
"rect max");
618 for (
x = 4 * xsize * ysize;
x > 0;
x--, dvec1++) {
625 printf(
"Found uninitialized speed in vector buffer... fixed.\n");
631 float minspeedsq = minspeed * minspeed;
633 minvecbufrect = (
float *)
MEM_callocN(
sizeof(
float[4]) * xsize * ysize,
"minspeed buf");
636 dvec2 = minvecbufrect;
637 for (
x = 2 * xsize * ysize;
x > 0;
x--, dvec1 += 2, dvec2 += 2) {
638 if (dvec1[0] == 0.0f && dvec1[1] == 0.0f) {
643 float speedsq = dvec1[0] * dvec1[0] + dvec1[1] * dvec1[1];
644 if (speedsq <= minspeedsq) {
649 speedsq = 1.0f - minspeed /
sqrtf(speedsq);
650 dvec2[0] = speedsq * dvec1[0];
651 dvec2[1] = speedsq * dvec1[1];
655 SWAP(
float *, minvecbufrect, vecbufrect);
659 rectvz = (
float *)
MEM_callocN(
sizeof(
float[4]) * (xsize + 1) * (ysize + 1),
"vertices");
661 for (
y = 0;
y <= ysize;
y++) {
664 dvec1 = vecbufrect + 4 *
y * xsize;
667 dvec1 = vecbufrect + 4 * (
y - 1) * xsize;
671 dvec2 = vecbufrect + 4 * (
y - 1) * xsize;
674 dvec2 = vecbufrect + 4 *
y * xsize;
677 for (
x = 0;
x <= xsize;
x++) {
680 for (step = 0; step < 2; step++, dvec1 += 2, dvec2 += 2, dvz += 2) {
685 if (dvec1[-4] != 0.0f || dvec1[-3] != 0.0f) {
690 if (dvec2[-4] != 0.0f || dvec2[-3] != 0.0f) {
704 if (dvec1[0] != 0.0f || dvec1[1] != 0.0f) {
715 if (dvec2[0] != 0.0f || dvec2[1] != 0.0f) {
727 float speedsq = dvz[0] * dvz[0] + dvz[1] * dvz[1];
728 if (speedsq > maxspeedsq) {
740 dz2 = rectvz + 4 * (ysize) * (xsize + 1);
741 for (
x = 0;
x <= xsize;
x++, dz1 += 4, dz2 += 4) {
748 dz2 = rectvz + 4 * (xsize);
749 for (
y = 0;
y <= ysize;
y++, dz1 += 4 * (xsize + 1), dz2 += 4 * (xsize + 1)) {
759 for (
x = xsize * ysize;
x > 0;
x--, dm++, dvec1 += 4) {
760 if ((dvec1[0] != 0.0f || dvec1[1] != 0.0f || dvec1[2] != 0.0f || dvec1[3] != 0.0f)) {
774 memset(newrect, 0,
sizeof(
float) * xsize * ysize * 4);
778 for (step = 1; step <= samples; step++) {
779 float speedfac = 0.5f * nbd->
fac * (
float)step / (
float)(samples + 1);
782 for (side = 0; side < 2; side++) {
783 float blendfac, ipodata[4];
787 for (
x = xsize * ysize - 1;
x >= 0;
x--) {
792 for (
x = xsize * ysize - 1;
x >= 0;
x--) {
793 if (rectmove[
x] == 0) {
794 rectz[
x] = zbufrect[
x];
803 for (
x = xsize * ysize - 1;
x >= 0;
x--) {
811 dz2 = rectvz + 4 * (xsize + 1);
818 speedfac = -speedfac;
823 for (fy = -0.5f +
jit[step & 255][0],
y = 0;
y < ysize;
y++, fy += 1.0f) {
824 for (fx = -0.5f +
jit[step & 255][1],
x = 0;
x < xsize;
825 x++, fx += 1.0f, dimg += 4, dz1 += 4, dz2 += 4, dm++, dz++) {
827 float jfx = fx + 0.5f;
828 float jfy = fy + 0.5f;
855 ARRAY_SET_ITEMS(
v2, speedfac * dz1[4] + jfx + 1.0f, speedfac * dz1[5] + jfy, *dz);
857 v3, speedfac * dz2[4] + jfx + 1.0f, speedfac * dz2[5] + jfy + 1.0f, *dz);
858 ARRAY_SET_ITEMS(v4, speedfac * dz2[0] + jfx, speedfac * dz2[1] + jfy + 1.0f, *dz);
885 blendfac = ((samples - step) / (
float)samples);
887 blendfac = 3.0f *
pow(blendfac, 2.0f) - 2.0f *
pow(blendfac, 3.0f);
892 for (dr = rectdraw, dz2 = newrect,
x = xsize * ysize - 1;
x >= 0;
893 x--, dr++, dz2 += 4, rw++, rm++) {
895 float bfac = dr->alpha * blendfac;
897 dz2[0] += bfac * dr->colpoin[0];
898 dz2[1] += bfac * dr->colpoin[1];
899 dz2[2] += bfac * dr->colpoin[2];
900 dz2[3] += bfac * dr->colpoin[3];
903 *rm =
MAX2(*rm, bfac);
914 for (dz2 = newrect,
x = xsize * ysize - 1;
x >= 0;
x--, dz2 += 4, ro += 4, rw++, rm++, dm++) {
916 float fac = (*rw == 0.0f) ? 0.0f : mfac / (*rw);
917 float nfac = 1.0f - mfac;
919 dz2[0] = fac * dz2[0] + nfac * ro[0];
920 dz2[1] = fac * dz2[1] + nfac * ro[1];
921 dz2[2] = fac * dz2[2] + nfac * ro[2];
922 dz2[3] = fac * dz2[3] + nfac * ro[3];
typedef float(TangentPoint)[2]
void BLI_jitter_init(float(*jitarr)[2], int num)
MINLINE int min_ii(int a, int b)
MINLINE float min_ff(float a, float b)
MINLINE int max_ii(int a, int b)
MINLINE void copy_v4_v4(float r[4], const float a[4])
#define ARRAY_SET_ITEMS(...)
typedef double(DMatrix)[4][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 GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble z
_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 GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble y1
_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
_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 GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble x2
_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 GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
ATTR_WARN_UNUSED_RESULT const BMVert * v2
a MemoryBuffer contains access to the data of a chunk
void copy_from(const MemoryBuffer *src, const rcti &area)
MemoryBuffer * inflate() const
bool is_a_single_elem() const
float * get_buffer()
get the data of this MemoryBuffer
unsigned int get_height() const
void add_output_socket(DataType datatype)
SocketReader * get_input_socket_reader(unsigned int index)
unsigned int get_width() const
NodeOperationFlags flags_
NodeOperationOutput * get_output_socket(unsigned int index=0)
const rcti & get_canvas() const
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 *)
void init_execution(QualityHelper helper)
void * initialize_tile_data(rcti *rect) override
void init_execution() override
void execute_pixel(float output[4], int x, int y, void *data) override
void update_memory_buffer(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
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.
bool determine_depending_area_of_interest(rcti *input, ReadBufferOperation *read_operation, rcti *output) override
void generate_vector_blur(float *data, MemoryBuffer *input_image, MemoryBuffer *input_speed, MemoryBuffer *inputZ)
depth_tx normal_tx diffuse_light_tx specular_light_tx volume_light_tx environment_tx ambient_occlusion_tx aov_value_tx in_weight_img image(1, GPU_R32F, Qualifier::WRITE, ImageType::FLOAT_2D_ARRAY, "out_weight_img") .image(3
ccl_global float * buffer
ccl_global KernelShaderEvalInput ccl_global float * output
ccl_global const KernelWorkTile * tile
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
ccl_device_inline float3 ceil(const float3 &a)
ccl_device_inline float3 pow(float3 v, float e)
constexpr int IMAGE_INPUT_INDEX
static void area(int d1, int d2, int e1, int e2, float weights[2])
static void zbuf_add_to_span(ZSpan *zspan, const float v1[2], const float v2[2])
void zbuf_accumulate_vecblur(NodeBlurData *nbd, int xsize, int ysize, float *newrect, const float *imgrect, float *vecbufrect, const float *zbufrect)
constexpr int COM_DATA_TYPE_COLOR_CHANNELS
static void zbuf_fill_in_rgba(ZSpan *zspan, DrawBufPixel *col, float *v1, float *v2, float *v3, float *v4)
static void quad_bezier_2d(float *result, const float *v1, const float *v2, const float *ipodata)
static void zbuf_init_span(ZSpan *zspan)
constexpr int COM_data_type_num_channels(const DataType datatype)
void zbuf_alloc_span(ZSpan *zspan, int rectx, int recty, float clipcrop)
void antialias_tagbuf(int xsize, int ysize, char *rectmove)
static void set_quad_bezier_ipo(float fac, float *data)
void zbuf_free_span(ZSpan *zspan)
SymEdge< T > * prev(const SymEdge< T > *se)
static bNodeSocketTemplate inputs[]
bool is_fullframe_operation