[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13690] trunk/blender/source/blender/ render/intern/source/shadeoutput.c: Allows negative light to result in negative diffuse and 'combined'

Ton Roosendaal ton at blender.org
Thu Feb 14 19:00:58 CET 2008


Revision: 13690
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13690
Author:   ton
Date:     2008-02-14 19:00:58 +0100 (Thu, 14 Feb 2008)

Log Message:
-----------
Allows negative light to result in negative diffuse and 'combined'
when you have world exposure set. (it used to clip it in 0-1, now it
mirrors the values)

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	2008-02-14 15:14:01 UTC (rev 13689)
+++ trunk/blender/source/blender/render/intern/source/shadeoutput.c	2008-02-14 18:00:58 UTC (rev 13690)
@@ -1513,11 +1513,28 @@
 	}
 }
 
+/* let's map negative light as if it mirrors positive light, otherwise negative values disappear */
 static void wrld_exposure_correct(float *diff)
 {
-	diff[0]= R.wrld.linfac*(1.0f-exp( diff[0]*R.wrld.logfac) );
-	diff[1]= R.wrld.linfac*(1.0f-exp( diff[1]*R.wrld.logfac) );
-	diff[2]= R.wrld.linfac*(1.0f-exp( diff[2]*R.wrld.logfac) );
+	float f= diff[0];
+	
+	if(f>0.0f)
+		diff[0]= R.wrld.linfac*(1.0f-exp( f*R.wrld.logfac) );
+	else
+		diff[0]= - R.wrld.linfac*(1.0f-exp( - f*R.wrld.logfac) );
+	
+	f= diff[1];
+	if(f>0.0f)
+		diff[1]= R.wrld.linfac*(1.0f-exp( f*R.wrld.logfac) );
+	else
+		diff[1]= - R.wrld.linfac*(1.0f-exp( - f*R.wrld.logfac) );
+	
+	f= diff[2];
+	if(f>0.0f)
+		diff[2]= R.wrld.linfac*(1.0f-exp( f*R.wrld.logfac) );
+	else
+		diff[2]= - R.wrld.linfac*(1.0f-exp( - f*R.wrld.logfac) );
+	
 }
 
 void shade_lamp_loop(ShadeInput *shi, ShadeResult *shr)





More information about the Bf-blender-cvs mailing list