From 05b1f00858313930b8a850aff6349bb6ab68efff Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 26 Mar 2010 10:41:48 +0000 Subject: fix rendering another scene from the compositor not working. (commit 27745 by Brecht from render25 branch) --- source/blender/makesdna/DNA_scene_types.h | 2 +- source/blender/render/intern/source/pipeline.c | 57 +++++++++++++------------- 2 files changed, 29 insertions(+), 30 deletions(-) diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index ed0640690a5..f9deebb0026 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -900,7 +900,7 @@ typedef struct Scene { #define R_NO_TEX 0x2000 #define R_STAMP_INFO 0x4000 /* deprecated */ #define R_FULL_SAMPLE 0x8000 -#define R_COMP_RERENDER 0x10000 +#define R_DEPRECATED 0x10000 #define R_RECURS_PROTECTION 0x20000 #define R_TEXNODE_PREVIEW 0x40000 diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index d7e8a05d128..3ff4e70368a 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -1275,7 +1275,7 @@ void RE_InitState(Render *re, Render *source, RenderData *rd, SceneRenderLayer * int index = BLI_findindex(&re->r.layers, srl); if (index != -1) { re->r.actlay = index; - re->r.scemode |= (R_SINGLE_LAYER|R_COMP_RERENDER); + re->r.scemode |= R_SINGLE_LAYER; } } @@ -2217,6 +2217,7 @@ static void render_scene(Render *re, Scene *sce, int cfra) /* still unsure entity this... */ resc->scene= sce; + resc->lay= sce->lay; /* ensure scene has depsgraph, base flags etc OK */ set_scene_bg(sce); @@ -2449,38 +2450,36 @@ static void do_render_composite_fields_blur_3d(Render *re) ntreeCompositTagAnimated(ntree); } - if(1 || !(re->r.scemode & R_COMP_RERENDER)) { - if(ntree && re->r.scemode & R_DOCOMP) { - /* checks if there are render-result nodes that need scene */ - if((re->r.scemode & R_SINGLE_LAYER)==0) - ntree_render_scenes(re); + if(ntree && re->r.scemode & R_DOCOMP) { + /* checks if there are render-result nodes that need scene */ + if((re->r.scemode & R_SINGLE_LAYER)==0) + ntree_render_scenes(re); + + if(!re->test_break(re->tbh)) { + ntree->stats_draw= render_composit_stats; + ntree->test_break= re->test_break; + ntree->sdh= re->sdh; + ntree->tbh= re->tbh; + /* in case it was never initialized */ + R.sdh= re->sdh; + R.stats_draw= re->stats_draw; - if(!re->test_break(re->tbh)) { - ntree->stats_draw= render_composit_stats; - ntree->test_break= re->test_break; - ntree->sdh= re->sdh; - ntree->tbh= re->tbh; - /* in case it was never initialized */ - R.sdh= re->sdh; - R.stats_draw= re->stats_draw; - - if (update_newframe) - scene_update_for_newframe(re->scene, re->lay); - - if(re->r.scemode & R_FULL_SAMPLE) - do_merge_fullsample(re, ntree); - else { - ntreeCompositExecTree(ntree, &re->r, G.background==0); - } - - ntree->stats_draw= NULL; - ntree->test_break= NULL; - ntree->tbh= ntree->sdh= NULL; + if (update_newframe) + scene_update_for_newframe(re->scene, re->lay); + + if(re->r.scemode & R_FULL_SAMPLE) + do_merge_fullsample(re, ntree); + else { + ntreeCompositExecTree(ntree, &re->r, G.background==0); } + + ntree->stats_draw= NULL; + ntree->test_break= NULL; + ntree->tbh= ntree->sdh= NULL; } - else if(re->r.scemode & R_FULL_SAMPLE) - do_merge_fullsample(re, NULL); } + else if(re->r.scemode & R_FULL_SAMPLE) + do_merge_fullsample(re, NULL); } /* weak... the display callback wants an active renderlayer pointer... */ -- cgit v1.2.3