[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36344] trunk/blender/source/blender/ render/intern/source/shadeoutput.c: fixed some issues with the new " shadow only + shading" code.

M.G. Kishalmi lmg at kishalmi.net
Tue Apr 26 17:29:13 CEST 2011


Revision: 36344
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36344
Author:   lmg
Date:     2011-04-26 15:29:12 +0000 (Tue, 26 Apr 2011)
Log Message:
-----------
fixed some issues with the new "shadow only + shading" code.
patch from MiikaH.

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

Modified: trunk/blender/source/blender/render/intern/source/shadeoutput.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/shadeoutput.c	2011-04-26 13:51:56 UTC (rev 36343)
+++ trunk/blender/source/blender/render/intern/source/shadeoutput.c	2011-04-26 15:29:12 UTC (rev 36344)
@@ -1523,19 +1523,19 @@
 			
 			if(lar->shb || (lar->mode & LA_SHAD_RAY)) {
 				visifac= lamp_get_visibility(lar, shi->co, lv, &lampdist);
+				ir+= 1.0f;
+
 				if(visifac <= 0.0f) {
-					if (shi->mat->shadowonly_flag == MA_SO_OLD) {
-						ir+= 1.0f;
+					if (shi->mat->shadowonly_flag == MA_SO_OLD)
 						accum+= 1.0f;
-					}
+
 					continue;
 				}
 				inpr= INPR(shi->vn, lv);
 				if(inpr <= 0.0f) {
-					if (shi->mat->shadowonly_flag == MA_SO_OLD) {
-						ir+= 1.0f;
+					if (shi->mat->shadowonly_flag == MA_SO_OLD)
 						accum+= 1.0f;
-					}
+
 					continue;
 				}
 
@@ -1543,11 +1543,9 @@
 
 				if (shi->mat->shadowonly_flag == MA_SO_OLD) {
 					/* Old "Shadows Only" */
-					ir+= 1.0f;
 					accum+= (1.0f-visifac) + (visifac)*rgb_to_grayscale(shadfac)*shadfac[3];
 				}
 				else {
-					ir+= lar->energy;
 					shaded += rgb_to_grayscale(shadfac)*shadfac[3] * visifac * lar->energy;
 
 					if (shi->mat->shadowonly_flag == MA_SO_SHADOW) {
@@ -1563,9 +1561,6 @@
 				accum = 1.0f - accum/ir;
 			}
 			else {
-				shaded/= ir;
-				lightness/= ir;
-
 				if (shi->mat->shadowonly_flag == MA_SO_SHADOW) {
 					if (lightness > 0.0f) {
 						/* Get shadow value from between 0.0f and non-shadowed lightness */
@@ -1581,10 +1576,11 @@
 			}}
 
 			shr->alpha= (shi->alpha)*(accum);
+			if (shr->alpha<0.0f) shr->alpha=0.0f;
 		}
 		else {
 			/* If "fully shaded", use full alpha even on areas that have no lights */
-			if (shi->mat->shadowonly_flag == MA_SO_SHADED) shr->alpha=1.0f;
+			if (shi->mat->shadowonly_flag == MA_SO_SHADED) shr->alpha=shi->alpha;
 			else shr->alpha= 0.f;
 		}
 	}




More information about the Bf-blender-cvs mailing list