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:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-05-15 20:21:02 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-05-15 20:21:02 +0400
commit295c37caa406240993ec42bdf698584527950c16 (patch)
tree69d5e1088ee320ecf35fdbc35420408724e10e1c /source/blender/render
parentad87d47fdb7f394219848ea66d55ce71c616821f (diff)
Fix T39763: Blender renders disabled Render Layers using Blender Internal
For now only disables scene render if all the layers are disabled, but scene will still be rendered if it's used in compo, has enabled layers which are not used by compo. Current pipeline doesn't allow to handle such cases nicely, so leaving it for later.
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/intern/source/pipeline.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index 232f9db1c65..679a703ae92 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -237,6 +237,17 @@ static int render_scene_needs_vector(Render *re)
return 0;
}
+static bool render_scene_has_layers_to_render(Scene *scene)
+{
+ SceneRenderLayer *srl;
+ for (srl = scene->r.layers.first; srl; srl = srl->next) {
+ if (!(srl->layflag & SCE_LAY_DISABLE)) {
+ return true;
+ }
+ }
+ return false;
+}
+
/* *************************************************** */
Render *RE_GetRender(const char *name)
@@ -1775,11 +1786,14 @@ static void tag_scenes_for_render(Render *re)
if (node->id != (ID *)re->scene) {
if ((node->id->flag & LIB_DOIT) == 0) {
- node->flag |= NODE_TEST;
- node->id->flag |= LIB_DOIT;
+ Scene *scene = (Scene *) node->id;
+ if (render_scene_has_layers_to_render(scene)) {
+ node->flag |= NODE_TEST;
+ node->id->flag |= LIB_DOIT;
#ifdef DEPSGRAPH_WORKAROUND_HACK
- tag_dependend_objects_for_render((Scene *) node->id, renderlay);
+ tag_dependend_objects_for_render(scene, renderlay);
#endif
+ }
}
}
}
@@ -2446,7 +2460,6 @@ static int check_composite_output(Scene *scene)
bool RE_is_rendering_allowed(Scene *scene, Object *camera_override, ReportList *reports)
{
- SceneRenderLayer *srl;
int scemode = check_mode_full_sample(&scene->r);
if (scene->r.mode & R_BORDER) {
@@ -2521,10 +2534,7 @@ bool RE_is_rendering_allowed(Scene *scene, Object *camera_override, ReportList *
}
/* layer flag tests */
- for (srl = scene->r.layers.first; srl; srl = srl->next)
- if (!(srl->layflag & SCE_LAY_DISABLE))
- break;
- if (srl == NULL) {
+ if (!render_scene_has_layers_to_render(scene)) {
BKE_report(reports, RPT_ERROR, "All render layers are disabled");
return 0;
}