[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27802] trunk/blender/source/blender: External render engines now have option bl_postprocess to determine

Brecht Van Lommel brecht at blender.org
Sun Mar 28 16:45:09 CEST 2010


Revision: 27802
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27802
Author:   blendix
Date:     2010-03-28 16:45:09 +0200 (Sun, 28 Mar 2010)

Log Message:
-----------
External render engines now have option bl_postprocess to determine
if compositing, sequencer, fields, etc should be rendered, or if the
render does that itself. The weak point is that this only applies to
rendering, so if you open the compositor, it will still run on the
rendered result. Enabled by default, set to False to disable.

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/rna_render.c
    trunk/blender/source/blender/render/extern/include/RE_pipeline.h
    trunk/blender/source/blender/render/intern/source/pipeline.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_render.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_render.c	2010-03-28 13:59:33 UTC (rev 27801)
+++ trunk/blender/source/blender/makesrna/intern/rna_render.c	2010-03-28 14:45:09 UTC (rev 27802)
@@ -207,14 +207,12 @@
 static void rna_RenderPass_rect_get(PointerRNA *ptr, float *values)
 {
 	RenderPass *rpass= (RenderPass*)ptr->data;
-	printf("rect get\n");
 	memcpy(values, rpass->rect, sizeof(float)*rpass->rectx*rpass->recty*rpass->channels);
 }
 
 static void rna_RenderPass_rect_set(PointerRNA *ptr, const float *values)
 {
 	RenderPass *rpass= (RenderPass*)ptr->data;
-	printf("rect set\n");
 	memcpy(rpass->rect, values, sizeof(float)*rpass->rectx*rpass->recty*rpass->channels);
 }
 
@@ -283,6 +281,10 @@
 	RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_DO_PREVIEW);
 	RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
 
+	prop= RNA_def_property(srna, "bl_postprocess", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_negative_sdna(prop, NULL, "type->flag", RE_DO_ALL);
+	RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
+
 	RNA_define_verify_sdna(1);
 }
 

Modified: trunk/blender/source/blender/render/extern/include/RE_pipeline.h
===================================================================
--- trunk/blender/source/blender/render/extern/include/RE_pipeline.h	2010-03-28 13:59:33 UTC (rev 27801)
+++ trunk/blender/source/blender/render/extern/include/RE_pipeline.h	2010-03-28 14:45:09 UTC (rev 27802)
@@ -253,9 +253,10 @@
 
 /* External Engine */
 
-#define RE_INTERNAL		1
-#define RE_GAME			2
-#define RE_DO_PREVIEW	4
+#define RE_INTERNAL			1
+#define RE_GAME				2
+#define RE_DO_PREVIEW		4
+#define RE_DO_ALL			8
 
 extern ListBase R_engines;
 

Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c	2010-03-28 13:59:33 UTC (rev 27801)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c	2010-03-28 14:45:09 UTC (rev 27802)
@@ -1736,12 +1736,12 @@
 
 /* ************  This part uses API, for rendering Blender scenes ********** */
 
-static int external_render_3d(Render *re);
+static int external_render_3d(Render *re, int do_all);
 
 static void do_render_3d(Render *re)
 {
 	/* try external */
-	if(external_render_3d(re))
+	if(external_render_3d(re, 0))
 		return;
 
 	/* internal */
@@ -2479,8 +2479,11 @@
 
 	/* ensure no images are in memory from previous animated sequences */
 	BKE_image_all_free_anim_ibufs(re->r.cfra);
-	
-	if((re->r.scemode & R_DOSEQ) && re->scene->ed && re->scene->ed->seqbase.first) {
+
+	if(external_render_3d(re, 1)) {
+		/* in this case external render overrides all */
+	}
+	else if((re->r.scemode & R_DOSEQ) && re->scene->ed && re->scene->ed->seqbase.first) {
 		/* note: do_render_seq() frees rect32 when sequencer returns float images */
 		if(!re->test_break(re->tbh)) 
 			do_render_seq(re);
@@ -3132,7 +3135,7 @@
 	}
 }
 
-static int external_render_3d(Render *re)
+static int external_render_3d(Render *re, int do_all)
 {
 	RenderEngineType *type;
 	RenderEngine engine;
@@ -3145,6 +3148,10 @@
 		return 0;
 	if((re->r.scemode & R_PREVIEWBUTS) && !(type->flag & RE_DO_PREVIEW))
 		return 0;
+	if(do_all && !(type->flag & RE_DO_ALL))
+		return 0;
+	if(!do_all && (type->flag & RE_DO_ALL))
+		return 0;
 
 	BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
 	if(re->result==NULL || !(re->r.scemode & R_PREVIEWBUTS)) {





More information about the Bf-blender-cvs mailing list