[Bf-blender-cvs] [c58385a] bake-cycles: Cycles-Bake: fix Cycles breaking on free()

Dalai Felinto noreply at git.blender.org
Wed Apr 23 02:46:33 CEST 2014


Commit: c58385aee744bcbe0189d7642e572caf5c036e8c
Author: Dalai Felinto
Date:   Tue Jan 14 19:51:50 2014 -0200
https://developer.blender.org/rBc58385aee744bcbe0189d7642e572caf5c036e8c

Cycles-Bake: fix Cycles breaking on free()

I may have to tweak this if in the end the result of the render is to be
rendered to a renderresult. If so I may pass width, height to the bake
function and set this as the 'scene' dimensions for the tiles.

===================================================================

M	source/blender/render/intern/source/external_engine.c

===================================================================

diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c
index 4ff0dea..55ff837 100644
--- a/source/blender/render/intern/source/external_engine.c
+++ b/source/blender/render/intern/source/external_engine.c
@@ -403,6 +403,7 @@ RenderData *RE_engine_get_render_data(Render *re)
 	return &re->r;
 }
 
+/* Bake */
 void RE_engine_bake_set_engine_parameters(Render *re, Main *bmain, Scene *scene)
 {
 	re->scene = scene;
@@ -410,7 +411,6 @@ void RE_engine_bake_set_engine_parameters(Render *re, Main *bmain, Scene *scene)
 	re->r = scene->r;
 }
 
-/* Bake */
 bool RE_engine_has_bake(Render *re)
 {
 	RenderEngineType *type = RE_engines_find(re->r.engine);
@@ -425,9 +425,10 @@ bool RE_engine_bake(Render *re, Object *object, BakePixel pixel_array[], int num
 
 	G.is_rendering = TRUE;
 
-	/* verify if we can render */
-	if (!type->bake)
-		return false;
+	/* set render info */
+	re->i.cfra = re->scene->r.cfra;
+	BLI_strncpy(re->i.scene_name, re->scene->id.name + 2, sizeof(re->i.scene_name));
+	re->i.totface = re->i.totvert = re->i.totstrand = re->i.totlamp = re->i.tothalo = 0;
 
 	/* render */
 	engine = re->engine;
@@ -439,6 +440,16 @@ bool RE_engine_bake(Render *re, Object *object, BakePixel pixel_array[], int num
 
 	engine->flag |= RE_ENGINE_RENDERING;
 
+	/* TODO: actually link to a parent which shouldn't happen */
+	engine->re = re;
+
+	engine->resolution_x = re->winx;
+	engine->resolution_y = re->winy;
+
+	RE_parts_init(re, FALSE);
+	engine->tile_x = re->partx;
+	engine->tile_y = re->party;
+
 	/* update is only called so we create the engine.session */
 	if (type->update)
 		type->update(engine, re->main, re->scene);
@@ -446,6 +457,8 @@ bool RE_engine_bake(Render *re, Object *object, BakePixel pixel_array[], int num
 	if (type->bake)
 		type->bake(engine, re->scene, object, pass_type, pixel_array, num_pixels, depth, result);
 
+	engine->tile_x = 0;
+	engine->tile_y = 0;
 	engine->flag &= ~RE_ENGINE_RENDERING;
 
 	/* re->engine becomes zero if user changed active render engine during render */




More information about the Bf-blender-cvs mailing list