diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-03-21 20:37:24 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-03-21 20:37:24 +0300 |
commit | c49316a9eb730f21094d795329c468d51f5ba1b5 (patch) | |
tree | d916cb23789a847cc7579d3193b37932a60fd017 /source/blender | |
parent | d3116dd4d2d25121d206b69ecfeee7d296848642 (diff) |
Bugfix: don't do full sample merging on re-rendered layers in
the compositor.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/makesdna/DNA_scene_types.h | 9 | ||||
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 42 | ||||
-rw-r--r-- | source/blender/src/editnode.c | 4 |
3 files changed, 29 insertions, 26 deletions
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index f31f9fff142..54a37d54e20 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -225,10 +225,12 @@ typedef struct RenderData { short bufflag; short quality; + short rpad; + /** * Flags for render settings. Use bit-masking to access the settings. */ - short scemode; + int scemode; /** * Flags for render settings. Use bit-masking to access the settings. @@ -236,7 +238,7 @@ typedef struct RenderData { int mode; /* render engine, octree resolution */ - short renderer, ocres, rpad[2]; + short renderer, ocres; /** * What to do with the sky/background. Picks sky/premul/key @@ -608,7 +610,7 @@ typedef struct Scene { #define R_INTERN 0 #define R_YAFRAY 1 -/* scemode */ +/* scemode (int now) */ #define R_DOSEQ 0x0001 #define R_BG_RENDER 0x0002 /* passepartout is camera option now, keep this for backward compatibility */ @@ -626,6 +628,7 @@ typedef struct Scene { #define R_NO_TEX 0x2000 #define R_STAMP_INFO 0x4000 #define R_FULL_SAMPLE 0x8000 +#define R_COMP_RERENDER 0x10000 /* r->stamp */ #define R_STAMP_TIME 0x0001 diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index a3368f0496d..3d3781eb0ee 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2156,30 +2156,30 @@ static void do_render_composite_fields_blur_3d(Render *re) ntreeCompositTagAnimated(ntree); } - 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()) { - ntree->stats_draw= render_composit_stats; - ntree->test_break= re->test_break; - /* in case it was never initialized */ - R.stats_draw= re->stats_draw; - - if(re->r.scemode & R_FULL_SAMPLE) - do_merge_fullsample(re, ntree); - else - ntreeCompositExecTree(ntree, &re->r, G.background==0); + if(!(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); - ntree->stats_draw= NULL; - ntree->test_break= NULL; + if(!re->test_break()) { + ntree->stats_draw= render_composit_stats; + ntree->test_break= re->test_break; + /* in case it was never initialized */ + R.stats_draw= re->stats_draw; + + 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; + } } - } - else - if(re->r.scemode & R_FULL_SAMPLE) + else if(re->r.scemode & R_FULL_SAMPLE) do_merge_fullsample(re, NULL); - + } } /* weak... the display callback wants an active renderlayer pointer... */ diff --git a/source/blender/src/editnode.c b/source/blender/src/editnode.c index ab2a36aa2d3..060f5c8639f 100644 --- a/source/blender/src/editnode.c +++ b/source/blender/src/editnode.c @@ -256,8 +256,8 @@ static void composite_node_render(SpaceNode *snode, bNode *node) scemode= G.scene->r.scemode; actlay= G.scene->r.actlay; - - G.scene->r.scemode |= R_SINGLE_LAYER; + + G.scene->r.scemode |= R_SINGLE_LAYER|R_COMP_RERENDER; G.scene->r.actlay= node->custom1; BIF_do_render(0); |