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
diff options
context:
space:
mode:
authorLukas Toenne <lukas.toenne@googlemail.com>2013-09-03 22:59:52 +0400
committerLukas Toenne <lukas.toenne@googlemail.com>2013-09-03 22:59:52 +0400
commitf9e43424feb17168dea8b5ffe9845c359558281a (patch)
treecff5fefdf7a8217b2998bd27fc5f4773a2eb9de0 /source/blender
parent2663d3833d62e048470f0e9dcd45cbfe02222542 (diff)
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.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/render/intern/source/rendercore.c50
1 files changed, 26 insertions, 24 deletions
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; a<R.tothalo; a++) {
- har= R.sortedhalos[a];
+ for (rl= rr->layers.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; a<R.tothalo; a++) {
+ har= R.sortedhalos[a];
+
+ if (har->flarec && (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;