[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