From ecb204fa7c53414f47c8870ae460807c8ca82e7b Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Thu, 15 Jun 2006 10:10:27 +0000 Subject: [PATCH] Bugfix #4338 When Edge render was choosen, the zbuffer values were altered, causing a halo render to go wrong. --- source/blender/render/intern/source/rendercore.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c index 778c46eea1a..7cdf05c4958 100644 --- a/source/blender/render/intern/source/rendercore.c +++ b/source/blender/render/intern/source/rendercore.c @@ -2688,13 +2688,12 @@ static void edge_enhance_calc(RenderPart *pa, float *rectf) int zval1, zval2, zval3; float *rf; - /* shift values in zbuffer 4 to the right, for filter we need multiplying with 12 max */ + /* shift values in zbuffer 4 to the right (anti overflows), for filter we need multiplying with 12 max */ rz= pa->rectz; if(rz==NULL) return; - for(y=0; yrecty; y++) { + for(y=0; yrecty; y++) for(x=0; xrectx; x++, rz++) (*rz)>>= 4; - } rz1= pa->rectz; rz2= rz1+pa->rectx; @@ -2733,6 +2732,12 @@ static void edge_enhance_calc(RenderPart *pa, float *rectf) rz3+= 2; rf+= 2; } + + /* shift back zbuf values, we might need it still */ + rz= pa->rectz; + for(y=0; yrecty; y++) + for(x=0; xrectx; x++, rz++) (*rz)<<= 4; + } static void edge_enhance_add(RenderPart *pa, float *rectf, float *arect)