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

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Jan 23 15:30:55 CET 2008


Revision: 13370
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13370
Author:   blendix
Date:     2008-01-23 15:30:55 +0100 (Wed, 23 Jan 2008)

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

Bugfix for strand pass adding with non-box filter, same bug as
existed in ztransp.

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

Modified: trunk/blender/source/blender/render/intern/source/strand.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/strand.c	2008-01-23 14:15:34 UTC (rev 13369)
+++ trunk/blender/source/blender/render/intern/source/strand.c	2008-01-23 14:30:55 UTC (rev 13370)
@@ -890,11 +890,12 @@
 {
 	RenderResult *rr= pa->result;
 	ShadeResult *shr, *shrrect= spart->result;
-	float *passrect= pass;
+	float *passrect= pass, alpha, sampalpha;
 	long *rdrect;
 	int osa, x, y, a, crop= 0, offs=0, od;
 
 	osa= (re->osa? re->osa: 1);
+	sampalpha= 1.0f/osa;
 
 	/* filtered render, for now we assume only 1 filter size */
 	if(pa->crop) {
@@ -928,21 +929,28 @@
 					add_transp_speed(rl, od, NULL, 0.0f, rdrect);
 			}
 			else {
+				alpha= 0.0f;
+
 				if(re->osa == 0) {
 					addAlphaUnderFloat(pass, shr->combined);
 				}
 				else {
-					for(a=0; a<re->osa; a++)
+					/* note; cannot use pass[3] for alpha due to filtermask */
+					for(a=0; a<re->osa; a++) {
 						add_filt_fmask(1<<a, shr[a].combined, pass, rr->rectx);
+						alpha += shr[a].combined[3];
+					}
 				}
 
 				if(spart->addpassflag) {
+					alpha *= sampalpha;
+
 					/* merge all in one, and then add */
 					merge_transp_passes(rl, shr);
-					add_transp_passes(rl, od, shr, pass[3]);
+					add_transp_passes(rl, od, shr, alpha);
 
 					if(spart->addpassflag & SCE_PASS_VECTOR)
-						add_transp_speed(rl, od, shr->winspeed, pass[3], rdrect);
+						add_transp_speed(rl, od, shr->winspeed, alpha, rdrect);
 				}
 			}
 		}





More information about the Bf-blender-cvs mailing list