From 2e6624a2b83f90e84c2f5a9d0fb0b73a1be35877 Mon Sep 17 00:00:00 2001 From: Joseph Eagar Date: Tue, 31 Jul 2007 05:27:41 +0000 Subject: [PATCH] =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. --- .../blender/render/intern/source/shadeoutput.c | 17 ++++++++++++++--- 1 file 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;