[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14080] trunk/blender/source/blender/ render/intern/source:

Brecht Van Lommel brechtvanlommel at pandora.be
Thu Mar 13 10:58:22 CET 2008


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

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

Fix for bug #8502: AO was being computed unnecessarily if it was
excluded from the combined pass and the AO pass was disabled.

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

Modified: trunk/blender/source/blender/render/intern/source/shadeinput.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/shadeinput.c	2008-03-13 03:32:23 UTC (rev 14079)
+++ trunk/blender/source/blender/render/intern/source/shadeinput.c	2008-03-13 09:58:21 UTC (rev 14080)
@@ -1255,12 +1255,15 @@
 	if(!(R.r.mode & R_RAYTRACE) && !(R.wrld.ao_gather_method == WO_AOGATHER_APPROX))
 		return;
 	
-	if(R.wrld.mode & WO_AMB_OCC)
-		if(ssamp->shi[0].passflag & (SCE_PASS_COMBINED|SCE_PASS_AO))
+	if(R.wrld.mode & WO_AMB_OCC) {
+		shi= &ssamp->shi[0];
+
+		if(((shi->passflag & SCE_PASS_COMBINED) && (shi->combinedflag & SCE_PASS_AO))
+			|| (shi->passflag & SCE_PASS_AO))
 			for(sample=0, shi= ssamp->shi; sample<ssamp->tot; shi++, sample++)
 				if(!(shi->mode & MA_SHLESS))
 					ambient_occlusion(shi);		/* stores in shi->ao[] */
-		
+	}
 }
 
 

Modified: trunk/blender/source/blender/render/intern/source/shadeoutput.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/shadeoutput.c	2008-03-13 03:32:23 UTC (rev 14079)
+++ trunk/blender/source/blender/render/intern/source/shadeoutput.c	2008-03-13 09:58:21 UTC (rev 14080)
@@ -1578,7 +1578,8 @@
 	
 	/* AO pass */
 	if(R.wrld.mode & WO_AMB_OCC) {
-		if(passflag & (SCE_PASS_COMBINED|SCE_PASS_AO)) {
+		if(((passflag & SCE_PASS_COMBINED) && (shi->combinedflag & SCE_PASS_AO))
+			|| (passflag & SCE_PASS_AO)) {
 			/* AO was calculated for scanline already */
 			if(shi->depth)
 				ambient_occlusion(shi);





More information about the Bf-blender-cvs mailing list