[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