44 const short imaprepeat,
45 const short imapextend);
52 int ofs =
y * ibuf->
x +
x;
70 const char *rect = (
char *)(ibuf->
rect + ofs);
72 col[0] = ((
float)rect[0]) * (1.0f / 255.0f);
73 col[1] = ((
float)rect[1]) * (1.0f / 255.0f);
74 col[2] = ((
float)rect[2]) * (1.0f / 255.0f);
75 col[3] = ((
float)rect[3]) * (1.0f / 255.0f);
86 const float texvec[3],
89 const bool skip_load_image)
114 iuser = &local_iuser;
178 if (
x < 0 || y < 0 || x >= ibuf->
x ||
y >= ibuf->
y || texvec[2] < -1.0f || texvec[2] > 1.0f) {
186 if (
x < 0 || y < 0 || x >= ibuf->
x ||
y >= ibuf->
y) {
235 float filterx, filtery;
243 fy -= (
float)(yi -
y) / (
float)ibuf->
y;
265 texres->
trgba[3] = texres->
tin = 1.0;
275 fx = 1.0f / texres->
trgba[3];
276 texres->
trgba[0] *= fx;
277 texres->
trgba[1] *= fx;
278 texres->
trgba[2] *= fx;
307 newrct = stack + *
count;
331 newrct = stack + *
count;
367 newrct = stack + *
count;
382 else if (rf->
ymax > y2) {
391 newrct = stack + *
count;
469 float muly, mulx, div,
col[4];
470 int x,
y, startx, endx, starty, endy;
483 if (endx >= ibuf->
x) {
486 if (endy >= ibuf->
y) {
490 if (starty == endy && startx == endx) {
495 for (
y = starty;
y <= endy;
y++) {
499 if (starty == endy) {
504 muly = 1.0f - (rf->
ymin -
y);
507 muly = (rf->
ymax -
y);
511 if (startx == endx) {
519 for (
x = startx;
x <= endx;
x++) {
522 mulx *= 1.0f - (rf->
xmin -
x);
525 mulx *= (rf->
xmax -
x);
559 const short imaprepeat,
560 const short imapextend)
574 float opp, tot, alphaclip = 1.0;
578 rf->
xmin = minx * (ibuf->
x);
579 rf->
xmax = maxx * (ibuf->
x);
580 rf->
ymin = miny * (ibuf->
y);
581 rf->
ymax = maxy * (ibuf->
y);
589 else if (imaprepeat) {
595 if (alphaclip <= 0.0f) {
605 else if (imaprepeat) {
609 alphaclip *=
clipy_rctf(rf, 0.0, (
float)(ibuf->
y));
611 if (alphaclip <= 0.0f) {
634 texres->
trgba[0] /= tot;
635 texres->
trgba[1] /= tot;
636 texres->
trgba[2] /= tot;
638 texres->
trgba[3] /= tot;
646 if (texres->
talpha == 0) {
647 texres->
trgba[3] = 1.0;
650 if (alphaclip != 1.0f) {
652 texres->
trgba[0] *= alphaclip;
653 texres->
trgba[1] *= alphaclip;
654 texres->
trgba[2] *= alphaclip;
655 texres->
trgba[3] *= alphaclip;
685 x +=
x < 0 ? 2 * ibuf->
x : 0;
686 x =
x >= ibuf->
x ? 2 * ibuf->
x -
x - 1 :
x;
688 y +=
y < 0 ? ibuf->
y : 0;
692 x +=
x < 0 ? ibuf->
x : 0;
694 y +=
y < 0 ? 2 * ibuf->
y : 0;
695 y =
y >= ibuf->
y ? 2 * ibuf->
y -
y - 1 :
y;
698 x = (
x < 0) ? 0 : ((
x >= ibuf->
x) ? (ibuf->
x - 1) :
x);
699 y = (
y < 0) ? 0 : ((
y >= ibuf->
y) ? (ibuf->
y - 1) :
y);
703 x += (
x < 0) ? ibuf->
x : 0;
705 y += (
y < 0) ? ibuf->
y : 0;
732 col[3] = clip ? 0.0f : (ibuf->
channels == 4 ? fp[3] : 1.0f);
736 const char *rect = (
char *)(ibuf->
rect +
x +
y * ibuf->
x);
737 float inv_alpha_fac = (1.0f / 255.0f) * rect[3] * (1.0f / 255.0f);
738 col[0] = rect[0] * inv_alpha_fac;
739 col[1] = rect[1] * inv_alpha_fac;
740 col[2] = rect[2] * inv_alpha_fac;
741 col[3] = clip ? 0.0f : rect[3] * (1.0f / 255.0f);
748 float col[4],
ImBuf *ibuf,
float u,
float v,
int intpol,
int extflag)
751 float c00[4], c01[4], c10[4], c11[4];
752 const float ufl =
floorf(u -= 0.5f), vfl =
floorf(
v -= 0.5f);
753 const float uf = u - ufl, vf =
v - vfl;
754 const float w00 = (1.0f - uf) * (1.0f - vf), w10 = uf * (1.0f - vf), w01 = (1.0f - uf) * vf,
756 const int x1 = (int)ufl,
y1 = (
int)vfl,
x2 = x1 + 1, y2 =
y1 + 1;
761 col[0] = w00 * c00[0] + w10 * c10[0] + w01 * c01[0] + w11 * c11[0];
762 col[1] = w00 * c00[1] + w10 * c10[1] + w01 * c01[1] + w11 * c11[1];
763 col[2] = w00 * c00[2] + w10 * c10[2] + w01 * c01[2] + w11 * c11[2];
764 col[3] = clip ? 0.0f : w00 * c00[3] + w10 * c10[3] + w01 * c01[3] + w11 * c11[3];
772 int xs, ys, clip = 0;
773 float tc[4], xsd, ysd, cw = 0.0f;
774 const float ux = ibuf->
x * AFD->
dxt[0], uy = ibuf->
y * AFD->
dxt[1];
775 const float vx = ibuf->
x * AFD->
dyt[0], vy = ibuf->
y * AFD->
dyt[1];
776 int xsam = (int)(0.5f *
sqrtf(ux * ux + uy * uy) + 0.5f);
777 int ysam = (int)(0.5f *
sqrtf(vx * vx + vy * vy) + 0.5f);
778 const int minsam = AFD->
intpol ? 2 : 4;
779 xsam =
CLAMPIS(xsam, minsam, ibuf->
x * 2);
780 ysam =
CLAMPIS(ysam, minsam, ibuf->
y * 2);
784 for (ys = 0; ys < ysam; ys++) {
785 for (xs = 0; xs < xsam; xs++) {
786 const float su = (xs + ((ys & 1) + 0.5f) * 0.5f) * xsd - 0.5f;
787 const float sv = (ys + ((xs & 1) + 0.5f) * 0.5f) * ysd - 0.5f;
788 const float pu = fx + su * AFD->
dxt[0] + sv * AFD->
dyt[0];
789 const float pv = fy + su * AFD->
dxt[1] + sv * AFD->
dyt[1];
793 cw +=
out ? 0.0f : 1.0f;
794 texr->
trgba[0] += tc[0];
795 texr->
trgba[1] += tc[1];
796 texr->
trgba[2] += tc[2];
801 texr->
trgba[0] *= xsd;
802 texr->
trgba[1] *= xsd;
803 texr->
trgba[2] *= xsd;
805 texr->
trgba[3] = texr->
talpha ? texr->
trgba[3] * xsd : (clip ? cw * xsd : 1.0f);
822 const float uv[2] = {fx, fy};
839 const int maxn = AFD->
iProbes - 1;
842 (maxn ? (
float)maxn : 1.0f);
843 float du = maxn ?
cosf(AFD->
theta) * ll : 0.0f;
844 float dv = maxn ?
sinf(AFD->
theta) * ll : 0.0f;
853 for (n = -maxn; n <= maxn; n += 2) {
855 const float hn = n * 0.5f;
856 const float u = fx + hn * du,
v = fy + hn * dv;
859 const float wt =
expf(n * n *
D);
861 const float wt =
EWA_WTS[(int)(n * n *
D)];
867 texr->
trgba[0] += tc[0] * wt;
868 texr->
trgba[1] += tc[1] * wt;
869 texr->
trgba[2] += tc[2] * wt;
870 texr->
trgba[3] += texr->
talpha ? tc[3] * wt : 0.0f;
885 ImBuf *ibuf,
float minx,
float miny,
float maxx,
float maxy,
int extflag,
TexResult *texres)
894 rf.
xmin = minx * (ibuf->
x);
895 rf.
xmax = maxx * (ibuf->
x);
896 rf.
ymin = miny * (ibuf->
y);
897 rf.
ymax = maxy * (ibuf->
y);
899 alphaclip =
clipx_rctf(&rf, 0.0, (
float)(ibuf->
x));
900 alphaclip *=
clipy_rctf(&rf, 0.0, (
float)(ibuf->
y));
901 alphaclip =
max_ff(alphaclip, 0.0f);
903 if (alphaclip != 1.0f) {
905 texres->
trgba[0] *= alphaclip;
906 texres->
trgba[1] *= alphaclip;
907 texres->
trgba[2] *= alphaclip;
908 texres->
trgba[3] *= alphaclip;
941 const float texvec[3],
946 const bool skip_load_image)
949 float fx, fy, minx, maxx, miny, maxy;
951 int curmap, retval, intpol, extflag = 0;
1016 minx =
min_fff(dxt[0], dyt[0], dxt[0] + dyt[0]);
1017 maxx =
max_fff(dxt[0], dyt[0], dxt[0] + dyt[0]);
1018 miny =
min_fff(dxt[1], dyt[1], dxt[1] + dyt[1]);
1019 maxy =
max_fff(dxt[1], dyt[1], dxt[1] + dyt[1]);
1022 minx = (maxx - minx) * 0.5f;
1023 miny = (maxy - miny) * 0.5f;
1029 if (addval > minx) {
1032 if (addval > miny) {
1047 SWAP(
float, minx, miny);
1061 minx = (minx > 0.25f) ? 0.25f : ((minx < 1e-5f) ? 1e-5f : minx);
1062 miny = (miny > 0.25f) ? 0.25f : ((miny < 1e-5f) ? 1e-5f : miny);
1098 int xs1 = (int)
floorf(fx - minx);
1099 int ys1 = (int)
floorf(fy - miny);
1100 int xs2 = (int)
floorf(fx + minx);
1101 int ys2 = (int)
floorf(fy + miny);
1102 if ((xs1 != xs2) || (ys1 != ys2)) {
1104 fx -= ((xs1 + ys) & 1) ? xs2 : xs1;
1105 fy -= ((ys1 + xs) & 1) ? ys2 : ys1;
1108 fx -= ((xs1 + ys) & 1) ? xs1 : xs2;
1109 fy -= ((ys1 + xs) & 1) ? ys1 : ys2;
1132 fx = (fx - 0.5f) * omcd + 0.5f;
1133 fy = (fy - 0.5f) * omcd + 0.5f;
1140 if ((fx + minx) < 0.0f || (fy + miny) < 0.0f || (fx - minx) > 1.0f || (fy - miny) > 1.0f ||
1141 texvec[2] < -1.0f || texvec[2] > 1.0f) {
1149 if ((fx + minx) < 0.0f || (fy + miny) < 0.0f || (fx - minx) > 1.0f || (fy - miny) > 1.0f) {
1158 fx = (fx > 1.0f) ? 1.0f : ((fx < 0.0f) ? 0.0f : fx);
1159 fy = (fy > 1.0f) ? 1.0f : ((fy < 0.0f) ? 0.0f : fy);
1178 if (AFD.
dxt[0] * AFD.
dxt[0] + AFD.
dxt[1] * AFD.
dxt[1] > 2.0f * 2.0f) {
1181 if (AFD.
dyt[0] * AFD.
dyt[0] + AFD.
dyt[1] * AFD.
dyt[1] > 2.0f * 2.0f) {
1187 ImBuf *previbuf, *curibuf;
1195 const float ff =
sqrtf(ibuf->
x), q = ibuf->
y / ff;
1196 const float Ux = dxt[0] * ff, Vx = dxt[1] * q, Uy = dyt[0] * ff, Vy = dyt[1] * q;
1197 const float A = Vx * Vx + Vy * Vy;
1198 const float B = -2.0f * (Ux * Vx + Uy * Vy);
1199 const float C = Ux * Ux + Uy * Uy;
1200 const float F =
A *
C -
B *
B * 0.25f;
1201 float a,
b, th, ecc;
1209 fProbes = 2.0f * (
a /
b) - 1.0f;
1218 AFD.
dusc = 1.0f / ff;
1234 mipmaps[curmap + 1] = ibuf->
mipmap[curmap];
1235 if (ibuf->
mipmap[curmap]) {
1243 previbuf = curibuf = mipmaps[0];
1246 else if (levf >= maxlev - 1) {
1247 previbuf = curibuf = mipmaps[maxlev - 1];
1254 const int lev =
isnan(levf) ? 0 : (int)levf;
1255 curibuf = mipmaps[lev];
1256 previbuf = mipmaps[lev + 1];
1261 filterfunc(texres, curibuf, fx, fy, &AFD);
1262 if (previbuf != curibuf) {
1263 filterfunc(&texr, previbuf, fx, fy, &AFD);
1271 alpha_clip_aniso(ibuf, fx - minx, fy - miny, fx + minx, fy + miny, extflag, texres);
1277 const float ff =
sqrtf(ibuf->
x), q = ibuf->
y / ff;
1278 const float Ux = dxt[0] * ff, Vx = dxt[1] * q, Uy = dyt[0] * ff, Vy = dyt[1] * q;
1279 const float A = Vx * Vx + Vy * Vy;
1280 const float B = -2.0f * (Ux * Vx + Uy * Vy);
1281 const float C = Ux * Ux + Uy * Uy;
1282 const float F =
A *
C -
B *
B * 0.25f;
1283 float a,
b, th, ecc, fProbes;
1289 fProbes = 2.0f * (
a /
b) - 1.0f;
1298 AFD.
dusc = 1.0f / ff;
1301 filterfunc(texres, ibuf, fx, fy, &AFD);
1303 alpha_clip_aniso(ibuf, fx - minx, fy - miny, fx + minx, fy + miny, extflag, texres);
1327 fx = 1.0f / texres->
trgba[3];
1328 texres->
trgba[0] *= fx;
1329 texres->
trgba[1] *= fx;
1330 texres->
trgba[2] *= fx;
1345 const float texvec[3],
1350 const bool skip_load_image)
1353 float fx, fy, minx, maxx, miny, maxy, dx, dy, dxt[2], dyt[2];
1354 float maxd, pixsize;
1355 int curmap, retval, imaprepeat, imapextend;
1417 minx =
min_fff(dxt[0], dyt[0], dxt[0] + dyt[0]);
1418 maxx =
max_fff(dxt[0], dyt[0], dxt[0] + dyt[0]);
1419 miny =
min_fff(dxt[1], dyt[1], dxt[1] + dyt[1]);
1420 maxy =
max_fff(dxt[1], dyt[1], dxt[1] + dyt[1]);
1423 minx = (maxx - minx) / 2.0f;
1424 miny = (maxy - miny) / 2.0f;
1431 if (addval > minx) {
1434 if (addval > miny) {
1449 SWAP(
float, minx, miny);
1455 else if (minx < 0.00001f) {
1461 else if (miny < 0.00001f) {
1477 int xs, ys, xs1, ys1, xs2, ys2, boundary;
1479 xs = (int)
floor(fx);
1480 ys = (int)
floor(fy);
1495 xs1 = (int)
floor(fx - minx);
1496 ys1 = (int)
floor(fy - miny);
1497 xs2 = (int)
floor(fx + minx);
1498 ys2 = (int)
floor(fy + miny);
1499 boundary = (xs1 != xs2) || (ys1 != ys2);
1501 if (boundary == 0) {
1503 if ((xs + ys) & 1) {
1514 if ((xs + ys) & 1) {
1526 if ((xs1 + ys) & 1) {
1533 if ((ys1 + xs) & 1) {
1541 if ((xs1 + ys) & 1) {
1548 if ((ys1 + xs) & 1) {
1568 if (fx + minx < 0.0f || fy + miny < 0.0f || fx - minx > 1.0f || fy - miny > 1.0f ||
1569 texvec[2] < -1.0f || texvec[2] > 1.0f) {
1577 if (fx + minx < 0.0f || fy + miny < 0.0f || fx - minx > 1.0f || fy - miny > 1.0f) {
1589 else if (fx < 0.0f) {
1597 else if (fx < 0.0f) {
1598 fx += 1 - (int)(fx);
1606 else if (fy < 0.0f) {
1614 else if (fy < 0.0f) {
1615 fy += 1 - (int)(fy);
1622 ImBuf *previbuf, *curibuf;
1634 bumpscale = pixsize / maxd;
1635 if (bumpscale > 1.0f) {
1639 bumpscale *= bumpscale;
1643 previbuf = curibuf = ibuf;
1644 while (curmap < IMB_MIPMAP_LEVELS && ibuf->mipmap[curmap]) {
1645 if (maxd < pixsize) {
1649 curibuf = ibuf->
mipmap[curmap];
1650 pixsize = 1.0f / (
float)
MIN2(curibuf->
x, curibuf->
y);
1656 if (minx < 0.5f / ibuf->
x) {
1657 minx = 0.5f / ibuf->
x;
1659 if (miny < 0.5f / ibuf->
y) {
1660 miny = 0.5f / ibuf->
y;
1669 boxsample(curibuf, minx, miny, maxx, maxy, texres, imaprepeat, imapextend);
1671 if (previbuf != curibuf) {
1672 boxsample(previbuf, minx, miny, maxx, maxy, &texr, imaprepeat, imapextend);
1674 fx = 2.0f * (pixsize - maxd) / pixsize;
1695 if (minx < 0.5f / ibuf->
x) {
1696 minx = 0.5f / ibuf->
x;
1698 if (miny < 0.5f / ibuf->
y) {
1699 miny = 0.5f / ibuf->
y;
1703 boxsample(ibuf, fx - minx, fy - miny, fx + minx, fy + miny, texres, imaprepeat, imapextend);
1745 boxsample(ibuf, fx, fy, fx + dx, fy + dy, &texres, 0, 1);
1768 ewa_eval(&texres, ibuf, fx, fy, &AFD);
typedef float(TangentPoint)[2]
void BKE_image_pool_release_ibuf(struct Image *ima, struct ImBuf *ibuf, struct ImagePool *pool)
struct ImBuf * BKE_image_pool_acquire_ibuf(struct Image *ima, struct ImageUser *iuser, struct ImagePool *pool)
bool BKE_image_has_loaded_ibuf(struct Image *image)
int BKE_image_get_tile_from_pos(struct Image *ima, const float uv[2], float r_uv[2], float r_ofs[2])
MINLINE float max_fff(float a, float b, float c)
MINLINE int round_fl_to_int(float a)
MINLINE float max_ff(float a, float b)
MINLINE float min_fff(float a, float b, float c)
const float EWA_WTS[EWA_MAXIDX+1]
void BLI_ewa_filter(int width, int height, bool intpol, bool use_alpha, const float uv[2], const float du[2], const float dv[2], ewa_filter_read_pixel_cb read_pixel_cb, void *userdata, float result[4])
void BLI_ewa_imp2radangle(float A, float B, float C, float F, float *a, float *b, float *th, float *ecc)
MINLINE void mul_v4_fl(float r[4], float f)
MINLINE void add_v4_v4(float r[4], const float a[4])
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void mul_v2_fl(float r[2], float f)
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void zero_v4(float r[4])
MINLINE float len_v2(const float a[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void madd_v4_v4fl(float r[4], const float a[4], float f)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
void BLI_thread_unlock(int type)
void BLI_thread_lock(int type)
_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 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 GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
void IMB_remakemipmap(struct ImBuf *ibuf, int use_filter)
void IMB_makemipmap(struct ImBuf *ibuf, int use_filter)
Contains defines and structs used throughout the imbuf module.
#define IMB_MIPMAP_LEVELS
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
ATTR_WARN_UNUSED_RESULT const BMVert * v
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
SyclQueue void void size_t num_bytes void
static const pxr::TfToken out("out", pxr::TfToken::Immortal)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
struct ImBuf * mipmap[IMB_MIPMAP_LEVELS]
static float square_rctf(rctf *rf)
void ibuf_sample(ImBuf *ibuf, float fx, float fy, float dx, float dy, float result[4])
int imagewraposa(Tex *tex, Image *ima, ImBuf *ibuf, const float texvec[3], const float DXT[2], const float DYT[2], TexResult *texres, struct ImagePool *pool, const bool skip_load_image)
static float clipy_rctf(rctf *rf, float y1, float y2)
static int imagewraposa_aniso(Tex *tex, Image *ima, ImBuf *ibuf, const float texvec[3], float dxt[2], float dyt[2], TexResult *texres, struct ImagePool *pool, const bool skip_load_image)
static void boxsampleclip(struct ImBuf *ibuf, rctf *rf, TexResult *texres)
static void boxsample(ImBuf *ibuf, float minx, float miny, float maxx, float maxy, TexResult *texres, const short imaprepeat, const short imapextend)
int imagewrap(Tex *tex, Image *ima, const float texvec[3], TexResult *texres, struct ImagePool *pool, const bool skip_load_image)
static int ibuf_get_color_clip_bilerp(float col[4], ImBuf *ibuf, float u, float v, int intpol, int extflag)
static float clipx_rctf(rctf *rf, float x1, float x2)
static void ewa_eval(TexResult *texr, ImBuf *ibuf, float fx, float fy, afdata_t *AFD)
static void image_mipmap_test(Tex *tex, ImBuf *ibuf)
static void ibuf_get_color(float col[4], struct ImBuf *ibuf, int x, int y)
void image_sample(Image *ima, float fx, float fy, float dx, float dy, float result[4], struct ImagePool *pool)
struct ReadEWAData ReadEWAData
static void ewa_read_pixel_cb(void *userdata, int x, int y, float result[4])
static void clipx_rctf_swap(rctf *stack, short *count, float x1, float x2)
static void area_sample(TexResult *texr, ImBuf *ibuf, float fx, float fy, afdata_t *AFD)
static void clipy_rctf_swap(rctf *stack, short *count, float y1, float y2)
static int ibuf_get_color_clip(float col[4], ImBuf *ibuf, int x, int y, int extflag)
static void feline_eval(TexResult *texr, ImBuf *ibuf, float fx, float fy, afdata_t *AFD)
static void alpha_clip_aniso(ImBuf *ibuf, float minx, float miny, float maxx, float maxy, int extflag, TexResult *texres)
BLI_INLINE float D(const float *data, const int res[3], int x, int y, int z)