diff options
Diffstat (limited to 'source/blender/render/intern/source/imagetexture.c')
-rw-r--r-- | source/blender/render/intern/source/imagetexture.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/source/blender/render/intern/source/imagetexture.c b/source/blender/render/intern/source/imagetexture.c index b44c0135420..04010522c12 100644 --- a/source/blender/render/intern/source/imagetexture.c +++ b/source/blender/render/intern/source/imagetexture.c @@ -1055,6 +1055,13 @@ static int imagewraposa_aniso(Tex *tex, Image *ima, ImBuf *ibuf, const float tex fx -= xs; fy -= ys; } + else if ((tex->flag & TEX_CHECKER_ODD) == 0 && + (tex->flag & TEX_CHECKER_EVEN) == 0) + { + if (ima) + BKE_image_pool_release_ibuf(ima, ibuf, pool); + return retval; + } else { int xs1 = (int)floorf(fx - minx); int ys1 = (int)floorf(fy - miny); @@ -1248,7 +1255,9 @@ static int imagewraposa_aniso(Tex *tex, Image *ima, ImBuf *ibuf, const float tex texres->ta += levf*(texr.ta - texres->ta); } - alpha_clip_aniso(ibuf, fx-minx, fy-miny, fx+minx, fy+miny, extflag, texres); + if (tex->texfilter != TXF_EWA) { + alpha_clip_aniso(ibuf, fx-minx, fy-miny, fx+minx, fy+miny, extflag, texres); + } } } else { /* no mipmap */ @@ -1290,7 +1299,9 @@ static int imagewraposa_aniso(Tex *tex, Image *ima, ImBuf *ibuf, const float tex } else { filterfunc(texres, ibuf, fx, fy, &AFD); - alpha_clip_aniso(ibuf, fx-minx, fy-miny, fx+minx, fy+miny, extflag, texres); + if (tex->texfilter != TXF_EWA) { + alpha_clip_aniso(ibuf, fx-minx, fy-miny, fx+minx, fy+miny, extflag, texres); + } } } @@ -1472,6 +1483,13 @@ int imagewraposa(Tex *tex, Image *ima, ImBuf *ibuf, const float texvec[3], const fx-= xs; fy-= ys; } + else if ((tex->flag & TEX_CHECKER_ODD) == 0 && + (tex->flag & TEX_CHECKER_EVEN) == 0) + { + if (ima) + BKE_image_pool_release_ibuf(ima, ibuf, pool); + return retval; + } else { xs1= (int)floor(fx-minx); |