[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57352] trunk/blender: Fix #35681: cycles excluded layers still got evaluated before and after
Brecht Van Lommel
brechtvanlommel at pandora.be
Mon Jun 10 15:53:38 CEST 2013
Revision: 57352
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57352
Author: blendix
Date: 2013-06-10 13:53:38 +0000 (Mon, 10 Jun 2013)
Log Message:
-----------
Fix #35681: cycles excluded layers still got evaluated before and after
rendering even if they were not used on any render layers.
Modified Paths:
--------------
trunk/blender/intern/cycles/blender/addon/__init__.py
trunk/blender/source/blender/editors/render/render_internal.c
trunk/blender/source/blender/makesrna/intern/rna_render.c
trunk/blender/source/blender/render/extern/include/RE_engine.h
trunk/blender/source/blender/render/intern/source/external_engine.c
Modified: trunk/blender/intern/cycles/blender/addon/__init__.py
===================================================================
--- trunk/blender/intern/cycles/blender/addon/__init__.py 2013-06-10 13:07:02 UTC (rev 57351)
+++ trunk/blender/intern/cycles/blender/addon/__init__.py 2013-06-10 13:53:38 UTC (rev 57352)
@@ -40,6 +40,7 @@
bl_label = "Cycles Render"
bl_use_shading_nodes = True
bl_use_preview = True
+ bl_use_exclude_layers = True
def __init__(self):
self.session = None
Modified: trunk/blender/source/blender/editors/render/render_internal.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_internal.c 2013-06-10 13:07:02 UTC (rev 57351)
+++ trunk/blender/source/blender/editors/render/render_internal.c 2013-06-10 13:53:38 UTC (rev 57352)
@@ -422,7 +422,7 @@
free_main(rj->main);
/* else the frame will not update for the original value */
- if (!(rj->scene->r.scemode & R_NO_FRAME_UPDATE)) {
+ if (rj->anim && !(rj->scene->r.scemode & R_NO_FRAME_UPDATE)) {
/* possible this fails of loading new file while rendering */
if (G.main->wm.first) {
ED_update_for_newframe(G.main, rj->scene, 1);
Modified: trunk/blender/source/blender/makesrna/intern/rna_render.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_render.c 2013-06-10 13:07:02 UTC (rev 57351)
+++ trunk/blender/source/blender/makesrna/intern/rna_render.c 2013-06-10 13:53:38 UTC (rev 57352)
@@ -452,6 +452,10 @@
RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_SHADING_NODES);
RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
+ prop = RNA_def_property(srna, "bl_use_exclude_layers", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_EXCLUDE_LAYERS);
+ RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
+
RNA_define_verify_sdna(1);
}
Modified: trunk/blender/source/blender/render/extern/include/RE_engine.h
===================================================================
--- trunk/blender/source/blender/render/extern/include/RE_engine.h 2013-06-10 13:07:02 UTC (rev 57351)
+++ trunk/blender/source/blender/render/extern/include/RE_engine.h 2013-06-10 13:53:38 UTC (rev 57352)
@@ -56,6 +56,7 @@
#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
Modified: trunk/blender/source/blender/render/intern/source/external_engine.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/external_engine.c 2013-06-10 13:07:02 UTC (rev 57351)
+++ trunk/blender/source/blender/render/intern/source/external_engine.c 2013-06-10 13:53:38 UTC (rev 57352)
@@ -410,9 +410,31 @@
/* 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);
if (re->result == NULL || !(re->r.scemode & R_BUTS_PREVIEW)) {
More information about the Bf-blender-cvs
mailing list