[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58174] trunk/blender: Fix #36091: external render engines like Luxrender don't work well with the save
Brecht Van Lommel
brechtvanlommel at pandora.be
Thu Jul 11 14:22:30 CEST 2013
Revision: 58174
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58174
Author: blendix
Date: 2013-07-11 12:22:29 +0000 (Thu, 11 Jul 2013)
Log Message:
-----------
Fix #36091: external render engines like Luxrender don't work well with the save
buffers option, it requires specific tile sizes and if they don't match what
OpenEXR expects file saving can get stuck.
Now I've made support for his optional, with a bl_use_save_buffers property for
RenderEngine, set to False by default.
Modified Paths:
--------------
trunk/blender/intern/cycles/blender/addon/__init__.py
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-07-11 11:38:28 UTC (rev 58173)
+++ trunk/blender/intern/cycles/blender/addon/__init__.py 2013-07-11 12:22:29 UTC (rev 58174)
@@ -41,6 +41,7 @@
bl_use_shading_nodes = True
bl_use_preview = True
bl_use_exclude_layers = True
+ bl_use_save_buffers = True
def __init__(self):
self.session = None
Modified: trunk/blender/source/blender/makesrna/intern/rna_render.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_render.c 2013-07-11 11:38:28 UTC (rev 58173)
+++ trunk/blender/source/blender/makesrna/intern/rna_render.c 2013-07-11 12:22:29 UTC (rev 58174)
@@ -456,6 +456,10 @@
RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_EXCLUDE_LAYERS);
RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
+ prop = RNA_def_property(srna, "bl_use_save_buffers", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_SAVE_BUFFERS);
+ 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-07-11 11:38:28 UTC (rev 58173)
+++ trunk/blender/source/blender/render/extern/include/RE_engine.h 2013-07-11 12:22:29 UTC (rev 58174)
@@ -57,6 +57,7 @@
#define RE_USE_POSTPROCESS 8
#define RE_USE_SHADING_NODES 16
#define RE_USE_EXCLUDE_LAYERS 32
+#define RE_USE_SAVE_BUFFERS 64
/* 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-07-11 11:38:28 UTC (rev 58173)
+++ trunk/blender/source/blender/render/intern/source/external_engine.c 2013-07-11 12:22:29 UTC (rev 58174)
@@ -253,8 +253,14 @@
/* for exr tile render, detect tiles that are done */
RenderPart *pa = get_part_from_result(re, result);
- if (pa)
+ if (pa) {
pa->status = PART_STATUS_READY;
+ }
+ else if (re->result->do_exr_tile) {
+ /* if written result does not match any tile and we are using save
+ * buffers, we are going to get openexr save errors */
+ fprintf(stderr, "RenderEngine.end_result: dimensions do not match any OpenEXR tile.\n");
+ }
if (re->result->do_exr_tile)
render_result_exr_file_merge(re->result, result);
@@ -438,12 +444,13 @@
/* create render result */
BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
if (re->result == NULL || !(re->r.scemode & R_BUTS_PREVIEW)) {
- int savebuffers;
+ int savebuffers = RR_USE_MEM;
if (re->result)
render_result_free(re->result);
- savebuffers = (re->r.scemode & R_EXR_TILE_FILE) ? RR_USE_EXR : RR_USE_MEM;
+ if ((type->flag & RE_USE_SAVE_BUFFERS) && (re->r.scemode & R_EXR_TILE_FILE))
+ savebuffers = RR_USE_EXR;
re->result = render_result_new(re, &re->disprect, 0, savebuffers, RR_ALL_LAYERS);
}
BLI_rw_mutex_unlock(&re->resultmutex);
More information about the Bf-blender-cvs
mailing list