From b5970939945b9ecdca42355439c1bddf6c41dcb0 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Mon, 11 Dec 2006 19:20:10 +0000 Subject: [PATCH] Bugfix #5406 If Material has "Shadow" off, it didn't skip AO correctly. Effect was it showed AO colors from other materials on same scanline. --- .../render/intern/source/shadeoutput.c | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c index 338a4f6def5..f3a677a28ee 100644 --- a/source/blender/render/intern/source/shadeoutput.c +++ b/source/blender/render/intern/source/shadeoutput.c @@ -1475,10 +1475,12 @@ void shade_lamp_loop(ShadeInput *shi, ShadeResult *shr) /* AO pass */ if(R.wrld.mode & WO_AMB_OCC) { if(passflag & (SCE_PASS_COMBINED|SCE_PASS_AO)) { - /* AO was calculated for scanline already */ - if(shi->depth) - ambient_occlusion(shi); - VECCOPY(shr->ao, shi->ao); + if(ma->mode & MA_SHADOW) { + /* AO was calculated for scanline already */ + if(shi->depth) + ambient_occlusion(shi); + VECCOPY(shr->ao, shi->ao); + } } } @@ -1548,12 +1550,14 @@ void shade_lamp_loop(ShadeInput *shi, ShadeResult *shr) /* add AO in combined? */ if(R.wrld.mode & WO_AMB_OCC) { if(shi->combinedflag & SCE_PASS_AO) { - float aodiff[3]; - ambient_occlusion_to_diffuse(shi, aodiff); - - shr->combined[0] += shi->r*aodiff[0]; - shr->combined[1] += shi->g*aodiff[1]; - shr->combined[2] += shi->b*aodiff[2]; + if(ma->mode & MA_SHADOW) { + float aodiff[3]; + ambient_occlusion_to_diffuse(shi, aodiff); + + shr->combined[0] += shi->r*aodiff[0]; + shr->combined[1] += shi->g*aodiff[1]; + shr->combined[2] += shi->b*aodiff[2]; + } } }