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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2008-03-21 20:37:24 +0300
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2008-03-21 20:37:24 +0300
commitc49316a9eb730f21094d795329c468d51f5ba1b5 (patch)
treed916cb23789a847cc7579d3193b37932a60fd017 /source/blender
parentd3116dd4d2d25121d206b69ecfeee7d296848642 (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.h9
-rw-r--r--source/blender/render/intern/source/pipeline.c42
-rw-r--r--source/blender/src/editnode.c4
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);