Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorJoseph Eagar <joeedh@gmail.com>2007-07-31 09:27:41 +0400
committerJoseph Eagar <joeedh@gmail.com>2007-07-31 09:27:41 +0400
commit2e6624a2b83f90e84c2f5a9d0fb0b73a1be35877 (patch)
treedfe3a31623acd464b9226aba54fefdbd7968d168 /source
parentab4af04a109dafe2551c5998ada3c2eeaf34a39e (diff)
=Render Bugfix=
Previous bugfix of spec not being included in only shadow lamps had 2 errors. There weren't any checks for if shi->spec and shi->shad go below 0 because of an only shadow lamp, and also the code for including spec in only shadow lamps was slightly wrong.
Diffstat (limited to 'source')
-rw-r--r--source/blender/render/intern/source/shadeoutput.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c
index b009d9ce755..9543b162133 100644
--- a/source/blender/render/intern/source/shadeoutput.c
+++ b/source/blender/render/intern/source/shadeoutput.c
@@ -1252,9 +1252,10 @@ static void shade_one_light(LampRen *lar, ShadeInput *shi, ShadeResult *shr, int
shr->shad[1] -= shadfac[3]*shi->g;
shr->shad[2] -= shadfac[3]*shi->b;
- shr->spec[0] -= shadfac[3]*shi->r;
- shr->spec[1] -= shadfac[3]*shi->g;
- shr->spec[2] -= shadfac[3]*shi->b;
+ shr->spec[0] -= shadfac[3]*shi->specr;
+ shr->spec[1] -= shadfac[3]*shi->specg;
+ shr->spec[2] -= shadfac[3]*shi->specb;
+
return;
}
@@ -1512,6 +1513,16 @@ void shade_lamp_loop(ShadeInput *shi, ShadeResult *shr)
shade_one_light(lar, shi, shr, passflag);
}
+ /*this check is to prevent only shadow lamps from producing negative
+ colors.*/
+ if (shr->spec[0] < 0) shr->spec[0] = 0;
+ if (shr->spec[1] < 0) shr->spec[1] = 0;
+ if (shr->spec[2] < 0) shr->spec[2] = 0;
+
+ if (shr->shad[0] < 0) shr->shad[0] = 0;
+ if (shr->shad[1] < 0) shr->shad[1] = 0;
+ if (shr->shad[2] < 0) shr->shad[2] = 0;
+
if(ma->sss_flag & MA_DIFF_SSS) {
float sss[3], col[3], texfac= ma->sss_texfac;