[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