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>2013-06-10 17:53:38 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2013-06-10 17:53:38 +0400
commitab52b15964243c7424f61ae0472bcff2e5571464 (patch)
tree04d06f19cfe2986ca60f80a7a04748bb43f9f55a /source/blender/render
parent4863feb95640bffa0a2c250f1b9da13100643fd2 (diff)
Fix #35681: cycles excluded layers still got evaluated before and after
rendering even if they were not used on any render layers.
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/extern/include/RE_engine.h1
-rw-r--r--source/blender/render/intern/source/external_engine.c26
2 files changed, 25 insertions, 2 deletions
diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h
index 7c1bc4d12d6..b6c3668512b 100644
--- a/source/blender/render/extern/include/RE_engine.h
+++ b/source/blender/render/extern/include/RE_engine.h
@@ -56,6 +56,7 @@ struct Scene;
#define RE_USE_PREVIEW 4
#define RE_USE_POSTPROCESS 8
#define RE_USE_SHADING_NODES 16
+#define RE_USE_EXCLUDE_LAYERS 32
/* RenderEngine.flag */
#define RE_ENGINE_ANIMATION 1
diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c
index b76e67dd634..551f3686370 100644
--- a/source/blender/render/intern/source/external_engine.c
+++ b/source/blender/render/intern/source/external_engine.c
@@ -410,8 +410,30 @@ int RE_engine_render(Render *re, int do_all)
/* update animation here so any render layer animation is applied before
* creating the render result */
- if ((re->r.scemode & (R_NO_FRAME_UPDATE | R_BUTS_PREVIEW)) == 0)
- BKE_scene_update_for_newframe(re->main, re->scene, re->lay);
+ if ((re->r.scemode & (R_NO_FRAME_UPDATE | R_BUTS_PREVIEW)) == 0) {
+ unsigned int lay = re->lay;
+
+ /* don't update layers excluded on all render layers */
+ if (type->flag & RE_USE_EXCLUDE_LAYERS) {
+ SceneRenderLayer *srl;
+ unsigned int non_excluded_lay = 0;
+
+ if (re->r.scemode & R_SINGLE_LAYER) {
+ srl = BLI_findlink(&re->r.layers, re->r.actlay);
+ if (srl)
+ non_excluded_lay |= ~srl->lay_exclude;
+ }
+ else {
+ for (srl = re->r.layers.first; srl; srl = srl->next)
+ if (!(srl->layflag & SCE_LAY_DISABLE))
+ non_excluded_lay |= ~srl->lay_exclude;
+ }
+
+ lay &= non_excluded_lay;
+ }
+
+ BKE_scene_update_for_newframe(re->main, re->scene, lay);
+ }
/* create render result */
BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);