[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14091] trunk/blender/source/blender/ render/intern/source/envmap.c:

Brecht Van Lommel brechtvanlommel at pandora.be
Thu Mar 13 16:55:58 CET 2008


Revision: 14091
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14091
Author:   blendix
Date:     2008-03-13 16:55:35 +0100 (Thu, 13 Mar 2008)

Log Message:
-----------

Fix for bug #8437: white borders in envmap reflection, cause was
change in imagewraposa that de-premuls colors, while envmap code
was expecting premultiplied colors.

Modified Paths:
--------------
    trunk/blender/source/blender/render/intern/source/envmap.c

Modified: trunk/blender/source/blender/render/intern/source/envmap.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/envmap.c	2008-03-13 15:40:24 UTC (rev 14090)
+++ trunk/blender/source/blender/render/intern/source/envmap.c	2008-03-13 15:55:35 UTC (rev 14091)
@@ -636,7 +636,7 @@
 	/* texvec should be the already reflected normal */
 	EnvMap *env;
 	ImBuf *ibuf;
-	float fac, vec[3], sco[3], dxts[3], dyts[3];
+	float fac, vec[3], sco[3], dxts[3], dyts[3], w[3];
 	int face, face1;
 	
 	env= tex->env;
@@ -717,10 +717,16 @@
 			fac= (texres->ta+texr1.ta+texr2.ta);
 			if(fac!=0.0) {
 				fac= 1.0/fac;
+
+				/* weight contributions based on alpha */
+				w[0]= texres->ta*fac;
+				w[1]= texr1.ta*fac;
+				w[2]= texr2.ta*fac;
 				
-				texres->tr= fac*(texres->ta*texres->tr + texr1.ta*texr1.tr + texr2.ta*texr2.tr );
-				texres->tg= fac*(texres->ta*texres->tg + texr1.ta*texr1.tg + texr2.ta*texr2.tg );
-				texres->tb= fac*(texres->ta*texres->tb + texr1.ta*texr1.tb + texr2.ta*texr2.tb );
+				/* interpolate premultiplied result (imagewraposa returns key) */
+				texres->tr= (w[0]*texres->ta*texres->tr + w[1]*texr1.ta*texr1.tr + w[2]*texr2.ta*texr2.tr);
+				texres->tg= (w[0]*texres->ta*texres->tg + w[1]*texr1.ta*texr1.tg + w[2]*texr2.ta*texr2.tg);
+				texres->tb= (w[0]*texres->ta*texres->tb + w[1]*texr1.ta*texr1.tb + w[2]*texr2.ta*texr2.tb);
 			}
 			texres->ta= 1.0;
 		}





More information about the Bf-blender-cvs mailing list