[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