From f9e43424feb17168dea8b5ffe9845c359558281a Mon Sep 17 00:00:00 2001 From: Lukas Toenne Date: Tue, 3 Sep 2013 18:59:52 +0000 Subject: Fix #36194, Halo material on Layer 2 produces flares on layer 1. Halo flares were simply rendered on the first available halo-enabled layer. Now use the flare layers correctly. --- source/blender/render/intern/source/rendercore.c | 50 ++++++++++++------------ 1 file changed, 26 insertions(+), 24 deletions(-) (limited to 'source/blender') diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c index fa3cf1cef87..e85ed058262 100644 --- a/source/blender/render/intern/source/rendercore.c +++ b/source/blender/render/intern/source/rendercore.c @@ -1957,34 +1957,36 @@ void add_halo_flare(Render *re) RenderResult *rr= re->result; RenderLayer *rl; HaloRen *har; - int a, mode, do_draw = FALSE; + int a, mode; /* for now, we get the first renderlayer in list with halos set */ - for (rl= rr->layers.first; rl; rl= rl->next) - if (rl->layflag & SCE_LAY_HALO) - break; - - if (rl==NULL || rl->rectf==NULL) - return; - - mode= R.r.mode; - R.r.mode &= ~R_PANORAMA; - - project_renderdata(&R, projectverto, 0, 0, 0); - - for (a=0; alayers.first; rl; rl= rl->next) { + int do_draw = FALSE; + + if ((rl->layflag & SCE_LAY_HALO) == 0) + continue; + if (rl->rectf==NULL) + continue; - if (har->flarec) { - do_draw = TRUE; - renderflare(rr, rl->rectf, har); + mode= R.r.mode; + R.r.mode &= ~R_PANORAMA; + + project_renderdata(&R, projectverto, 0, 0, 0); + + for (a=0; aflarec && (har->lay & rl->lay)) { + do_draw = TRUE; + renderflare(rr, rl->rectf, har); + } + } + + if (do_draw) { + /* weak... the display callback wants an active renderlayer pointer... */ + rr->renlay= rl; + re->display_draw(re->ddh, rr, NULL); } - } - - if (do_draw) { - /* weak... the display callback wants an active renderlayer pointer... */ - rr->renlay= rl; - re->display_draw(re->ddh, rr, NULL); } R.r.mode= mode; -- cgit v1.2.3