[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16648] trunk/blender/source/blender/ render/intern/source/rendercore.c: Bugfix #17656

Ton Roosendaal ton at blender.org
Sun Sep 21 14:03:46 CEST 2008


Revision: 16648
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16648
Author:   ton
Date:     2008-09-21 14:03:41 +0200 (Sun, 21 Sep 2008)

Log Message:
-----------
Bugfix #17656

- Changed order for applying atmosphere, it does it now before alpha-adding
  sky, giving correct transparency
- Added correction for de-premulling and premulling scatter color

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

Modified: trunk/blender/source/blender/render/intern/source/rendercore.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/rendercore.c	2008-09-21 10:31:22 UTC (rev 16647)
+++ trunk/blender/source/blender/render/intern/source/rendercore.c	2008-09-21 12:03:41 UTC (rev 16648)
@@ -713,7 +713,7 @@
 					if(lar->type==LA_SUN &&	lar->sunsky) {
 						
 						/* if it's sky continue and don't apply atmosphere effect on it */
-						if(*zrect >= 9.9e10) {
+						if(*zrect >= 9.9e10 || rgbrect[3]==0.0f) {
 							continue;
 						}
 						
@@ -721,7 +721,14 @@
 							float tmp_rgb[3];
 							
 							VECCOPY(tmp_rgb, rgbrect);
+							if(rgbrect[3]!=1.0f) {	/* de-premul */
+								float div= 1.0f/rgbrect[3];
+								VECMUL(tmp_rgb, div);
+							}
 							shadeAtmPixel(lar->sunsky, tmp_rgb, x, y, *zrect);
+							if(rgbrect[3]!=1.0f) {	/* premul */
+								VECMUL(tmp_rgb, rgbrect[3]);
+							}
 							
 							if(done==0) {
 								VECCOPY(rgb, tmp_rgb);
@@ -1199,6 +1206,10 @@
 			}
 		}
 
+		/* sun/sky */
+		if(rl->layflag & SCE_LAY_SKY)
+			atm_tile(pa, rl);
+		
 		/* sky before edge */
 		if(rl->layflag & SCE_LAY_SKY)
 			sky_tile(pa, rl);
@@ -1208,10 +1219,6 @@
 			if(R.r.mode & R_EDGE) 
 				edge_enhance_add(pa, rl->rectf, edgerect);
 		
-		/* sun/sky */
-		if(rl->layflag & SCE_LAY_SKY)
-			atm_tile(pa, rl);
-
 		if(rl->passflag & SCE_PASS_VECTOR)
 			reset_sky_speed(pa, rl);
 		
@@ -1362,6 +1369,10 @@
 			}
 		}
 		
+		/* sun/sky */
+		if(rl->layflag & SCE_LAY_SKY)
+			atm_tile(pa, rl);
+		
 		/* sky before edge */
 		if(rl->layflag & SCE_LAY_SKY)
 			sky_tile(pa, rl);
@@ -1372,10 +1383,6 @@
 					edge_enhance_add(pa, rl->rectf, edgerect);
 		}
 		
-		/* sun/sky */
-		if(rl->layflag & SCE_LAY_SKY)
-			atm_tile(pa, rl);
-			
 		if(rl->passflag & SCE_PASS_VECTOR)
 			reset_sky_speed(pa, rl);
 		





More information about the Bf-blender-cvs mailing list