[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27213] branches/soc-2008-mxcurioni/source /blender: Made an attempt for fixing an instability issue regarding animation

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Mon Mar 1 22:51:15 CET 2010


Revision: 27213
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27213
Author:   kjym3
Date:     2010-03-01 22:51:14 +0100 (Mon, 01 Mar 2010)

Log Message:
-----------
Made an attempt for fixing an instability issue regarding animation
rendering.

RE_BlenderFrame() and RE_BlenderAnim() are Blender's internal
top-level rendering API functions for a single frame and a series of
frames, respectively.  These functions rely on global variables to
keep render pipeline states.  Freestyle's stroke rendering was also
using RE_BlenderFrame to render a temporary scene of stroke meshes.
These nested calls of the top-level rendering API functions were
causing broken render pipeline states and eventually led to a crash.

This commit is intended to fix the issue, by introducing an rendering
API function RE_RenderFreestyleStrokes specifically used for stroke
rendering in Freestyle.  The new function does not do anything with
regard to the global variables in the rendering API implementation.

Modified Paths:
--------------
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
    branches/soc-2008-mxcurioni/source/blender/render/extern/include/RE_pipeline.h
    branches/soc-2008-mxcurioni/source/blender/render/intern/source/pipeline.c

Modified: branches/soc-2008-mxcurioni/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp	2010-03-01 20:01:40 UTC (rev 27212)
+++ branches/soc-2008-mxcurioni/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp	2010-03-01 21:51:14 UTC (rev 27213)
@@ -341,6 +341,6 @@
 	
 	Render *freestyle_render = RE_NewRender(freestyle_scene->id.name, RE_SLOT_DEFAULT);
 
-	RE_BlenderFrame( freestyle_render, freestyle_scene, NULL, 1);
+	RE_RenderFreestyleStrokes(freestyle_render, freestyle_scene);
 	return freestyle_render;
 }

Modified: branches/soc-2008-mxcurioni/source/blender/render/extern/include/RE_pipeline.h
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/render/extern/include/RE_pipeline.h	2010-03-01 20:01:40 UTC (rev 27212)
+++ branches/soc-2008-mxcurioni/source/blender/render/extern/include/RE_pipeline.h	2010-03-01 21:51:14 UTC (rev 27213)
@@ -216,6 +216,7 @@
 /* only RE_NewRender() needed, main Blender render calls */
 void RE_BlenderFrame(struct Render *re, struct Scene *scene, struct SceneRenderLayer *srl, int frame);
 void RE_BlenderAnim(struct Render *re, struct Scene *scene, int sfra, int efra, int tfra, struct ReportList *reports);
+void RE_RenderFreestyleStrokes(struct Render *re, struct Scene *scene);
 
 void RE_ReadRenderResult(struct Scene *scene, struct Scene *scenode);
 void RE_WriteRenderResult(RenderResult *rr, char *filename, int compress);

Modified: branches/soc-2008-mxcurioni/source/blender/render/intern/source/pipeline.c
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/render/intern/source/pipeline.c	2010-03-01 20:01:40 UTC (rev 27212)
+++ branches/soc-2008-mxcurioni/source/blender/render/intern/source/pipeline.c	2010-03-01 21:51:14 UTC (rev 27213)
@@ -2839,6 +2839,16 @@
 	RenderGlobal.renderingslot= RenderGlobal.viewslot;
 }
 
+void RE_RenderFreestyleStrokes(Render *re, Scene *scene)
+{
+	re->result_ok= 0;
+	scene->r.cfra= 1;
+	if(render_initialize_from_scene(re, scene, NULL, 0, 0)) {
+		do_render_all_options(re);
+	}
+	re->result_ok= 1;
+}
+
 static int do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh, ReportList *reports)
 {
 	char name[FILE_MAX];





More information about the Bf-blender-cvs mailing list