[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37342] trunk/blender/source/blender/ render/intern/source/imagetexture.c: Bugfix #27081
Ton Roosendaal
ton at blender.org
Thu Jun 9 18:12:11 CEST 2011
Revision: 37342
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37342
Author: ton
Date: 2011-06-09 16:12:10 +0000 (Thu, 09 Jun 2011)
Log Message:
-----------
Bugfix #27081
Displacement mapping didn't do linear interpolation between pixels,
causing render artefacts. Now it uses for image render without AA
a default interploation filter of 1 pixel size.
Fix provided by Miika Hamalainen. Thanks!
Modified Paths:
--------------
trunk/blender/source/blender/render/intern/source/imagetexture.c
Modified: trunk/blender/source/blender/render/intern/source/imagetexture.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/imagetexture.c 2011-06-09 16:05:34 UTC (rev 37341)
+++ trunk/blender/source/blender/render/intern/source/imagetexture.c 2011-06-09 16:12:10 UTC (rev 37342)
@@ -76,6 +76,8 @@
extern struct Render R;
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+static void boxsample(ImBuf *ibuf, float minx, float miny, float maxx, float maxy, TexResult *texres, int imaprepeat, int imapextend);
+
/* *********** IMAGEWRAPPING ****************** */
@@ -201,7 +203,16 @@
ibuf->rect+= (ibuf->x*ibuf->y);
}
- ibuf_get_color(&texres->tr, ibuf, x, y);
+ /* interpolate */
+ if (tex->imaflag & TEX_INTERPOL) {
+ float filterx, filtery;
+ filterx = (0.5f * tex->filtersize) / ibuf->x;
+ filtery = (0.5f * tex->filtersize) / ibuf->y;
+
+ boxsample(ibuf, fx-filterx, fy-filtery, fx+filterx, fy+filtery, texres, (tex->extend==TEX_REPEAT), (tex->extend==TEX_EXTEND));
+ }
+ else /* no filtering */
+ ibuf_get_color(&texres->tr, ibuf, x, y);
if( (R.flag & R_SEC_FIELD) && (ibuf->flags & IB_fields) ) {
ibuf->rect-= (ibuf->x*ibuf->y);
More information about the Bf-blender-cvs
mailing list