[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13477] trunk/blender/source/blender/ render/intern/source/pipeline.c: Two small fixes for FSA render:
Ton Roosendaal
ton at blender.org
Wed Jan 30 15:10:37 CET 2008
Revision: 13477
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13477
Author: ton
Date: 2008-01-30 15:10:37 +0100 (Wed, 30 Jan 2008)
Log Message:
-----------
Two small fixes for FSA render:
- better warning for exr tiles not being equally sized (compositor scenes)
- better check for which exr temp files should be read during merging
Modified Paths:
--------------
trunk/blender/source/blender/render/intern/source/pipeline.c
Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c 2008-01-30 14:01:05 UTC (rev 13476)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c 2008-01-30 14:10:37 UTC (rev 13477)
@@ -1944,11 +1944,16 @@
do_render_fields_blur_3d(resc);
}
-static void ntree_render_scenes(Render *re)
+static void tag_scenes_for_render(Render *re)
{
bNode *node;
- int cfra= re->scene->r.cfra;
+ Scene *sce;
+ for(sce= G.main->scene.first; sce; sce= sce->id.next)
+ sce->id.flag &= ~LIB_DOIT;
+
+ re->scene->id.flag |= LIB_DOIT;
+
if(re->scene->nodetree==NULL) return;
/* check for render-layers nodes using other scenes, we tag them LIB_DOIT */
@@ -1957,12 +1962,21 @@
if(node->id) {
if(node->id != (ID *)re->scene)
node->id->flag |= LIB_DOIT;
- else
- node->id->flag &= ~LIB_DOIT;
}
}
}
+}
+
+static void ntree_render_scenes(Render *re)
+{
+ bNode *node;
+ int cfra= re->scene->r.cfra;
+
+ if(re->scene->nodetree==NULL) return;
+
+ tag_scenes_for_render(re);
+
/* now foreach render-result node tagged we do a full render */
/* results are stored in a way compisitor will find it */
for(node= re->scene->nodetree->nodes.first; node; node= node->next) {
@@ -2008,6 +2022,7 @@
R.i.infostr= NULL;
}
+
/* reads all buffers, calls optional composite, merges in first result->rectf */
static void do_merge_fullsample(Render *re, bNodeTree *ntree)
{
@@ -2024,9 +2039,12 @@
/* set all involved renders on the samplebuffers (first was done by render itself) */
if(sample) {
Render *re1;
+
+ tag_scenes_for_render(re);
for(re1= RenderList.first; re1; re1= re1->next) {
- if(re1->r.scemode & R_FULL_SAMPLE)
- read_render_result(re1, sample);
+ if(re1->scene->id.flag & LIB_DOIT)
+ if(re1->r.scemode & R_FULL_SAMPLE)
+ read_render_result(re1, sample);
}
}
@@ -2351,6 +2369,7 @@
/* evaluating scene options for general Blender render */
static int render_initialize_from_scene(Render *re, Scene *scene)
{
+ Scene *sce;
int winx, winy;
rcti disprect;
@@ -2375,18 +2394,24 @@
disprect.ymax= winy;
}
- if(scene->r.scemode & R_EXR_TILE_FILE) {
- int partx= winx/scene->r.xparts, party= winy/scene->r.yparts;
-
- /* stupid exr tiles dont like different sizes */
- if(winx != partx*scene->r.xparts || winy != party*scene->r.yparts) {
- re->error("Sorry... exr tile saving only allowed with equally sized parts");
- return 0;
+ re->scene= scene;
+
+ /* check all scenes involved */
+ tag_scenes_for_render(re);
+ for(sce= G.main->scene.first; sce; sce= sce->id.next) {
+ if(sce->r.scemode & R_EXR_TILE_FILE) {
+ int partx= winx/sce->r.xparts, party= winy/sce->r.yparts;
+
+ /* stupid exr tiles dont like different sizes */
+ if(winx != partx*sce->r.xparts || winy != party*sce->r.yparts) {
+ re->error("Sorry... exr tile saving only allowed with equally sized parts");
+ return 0;
+ }
+ if((sce->r.mode & R_FIELDS) && (party & 1)) {
+ re->error("Sorry... exr tile saving only allowed with equally sized parts");
+ return 0;
+ }
}
- if((scene->r.mode & R_FIELDS) && (party & 1)) {
- re->error("Sorry... exr tile saving only allowed with equally sized parts");
- return 0;
- }
}
if(scene->r.scemode & R_SINGLE_LAYER)
@@ -2399,7 +2424,6 @@
/* initstate makes new result, have to send changed tags around */
ntreeCompositTagRender(re->scene);
- re->scene= scene;
if(!is_rendering_allowed(re))
return 0;
More information about the Bf-blender-cvs
mailing list