Bugfix: don't do full sample merging on re-rendered layers in

the compositor.
This commit is contained in:
Brecht Van Lommel 2008-03-21 17:37:24 +00:00
parent d3116dd4d2
commit c49316a9eb
3 changed files with 29 additions and 26 deletions

@ -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

@ -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_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(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;
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... */

@ -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);