Commit: 8823f851b71e7286643af5665bcc9dfdfc6cda12 Author: Dalai Felinto Date: Tue Feb 20 15:19:37 2018 -0300 Branches: temp-render-depsgraph https://developer.blender.org/rB8823f851b71e7286643af5665bcc9dfdfc6cda12
Update depsgraph before drawing the render layers * Store the required depsgraph and eval_ctx in the render layers * Call BKE_scene_graph_update_tagged() for these depsgraphs. Reviewers: sergey Subscribers: fclem Differential Revision: https://developer.blender.org/D3073 =================================================================== M source/blender/draw/intern/DRW_render.h M source/blender/draw/intern/draw_manager.c M source/blender/makesrna/intern/rna_render.c M source/blender/render/extern/include/RE_engine.h M source/blender/render/intern/source/external_engine.c =================================================================== diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h index 82ba2922dd0..b6ce34cc6b6 100644 --- a/source/blender/draw/intern/DRW_render.h +++ b/source/blender/draw/intern/DRW_render.h @@ -409,7 +409,7 @@ struct DefaultTextureList *DRW_viewport_texture_list_get(void); void DRW_viewport_request_redraw(void); -void DRW_render_to_image(struct RenderEngine *re, struct Depsgraph *depsgraph); +void DRW_render_to_image(struct RenderEngine *engine, struct Main *bmain, struct Scene *scene); void DRW_render_object_iter( void *vedata, struct RenderEngine *engine, struct Depsgraph *graph, void (*callback)(void *vedata, struct Object *ob, struct RenderEngine *engine, struct Depsgraph *graph)); diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 1f848c0d9a7..37c54aca106 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -35,6 +35,7 @@ #include "BKE_curve.h" #include "BKE_global.h" +#include "BKE_main.h" #include "BKE_mesh.h" #include "BKE_object.h" #include "BKE_pbvh.h" @@ -3612,9 +3613,8 @@ void DRW_draw_render_loop_offscreen( GPU_offscreen_bind(ofs, false); } -void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) +void DRW_render_to_image(RenderEngine *engine, Main *bmain, Scene *scene) { - Scene *scene = DEG_get_evaluated_scene(depsgraph); RenderEngineType *engine_type = engine->type; DrawEngineType *draw_engine_type = engine_type->draw_engine; RenderData *r = &scene->r; @@ -3628,7 +3628,7 @@ void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) DST.options.draw_background = scene->r.alphamode == R_ADDSKY; DST.draw_ctx = (DRWContextState){ - NULL, NULL, NULL, scene, NULL, NULL, engine_type, depsgraph, eval_ctx->object_mode, NULL, + NULL, NULL, NULL, scene, NULL, NULL, engine_type, NULL, eval_ctx->object_mode, NULL, }; drw_context_state_init(); @@ -3660,6 +3660,12 @@ void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) render_layer != NULL; render_layer = render_layer->next) { + BKE_scene_graph_update_tagged(&render_layer->eval_ctx, + render_layer->depsgraph, + bmain, + scene, + render_layer->eval_ctx.view_layer); + DST.draw_ctx.view_layer = render_layer->eval_ctx.view_layer; DST.draw_ctx.depsgraph = render_layer->depsgraph; diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index 15487082217..d88ff98eb58 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -166,7 +166,7 @@ static void engine_update(RenderEngine *engine, Main *bmain, Depsgraph *graph, S RNA_parameter_list_free(&list); } -static void engine_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) +static void engine_render_to_image(RenderEngine *engine, Main *bmain, Scene *scene) { extern FunctionRNA rna_RenderEngine_render_to_image_func; PointerRNA ptr; @@ -177,7 +177,8 @@ static void engine_render_to_image(RenderEngine *engine, struct Depsgraph *depsg func = &rna_RenderEngine_render_to_image_func; RNA_parameter_list_create(&list, &ptr, func); - RNA_parameter_set_lookup(&list, "depsgraph", &depsgraph); + RNA_parameter_set_lookup(&list, "data", &bmain); + RNA_parameter_set_lookup(&list, "scene", &scene); engine->type->ext.call(NULL, &ptr, func, &list); RNA_parameter_list_free(&list); @@ -518,7 +519,8 @@ static void rna_def_render_engine(BlenderRNA *brna) func = RNA_def_function(srna, "render_to_image", NULL); RNA_def_function_ui_description(func, "Render scene into an image"); RNA_def_function_flag(func, FUNC_REGISTER_OPTIONAL | FUNC_ALLOW_WRITE); - RNA_def_pointer(func, "desgraph", "Depsgraph", "", ""); + RNA_def_pointer(func, "data", "BlendData", "", ""); + RNA_def_pointer(func, "scene", "Scene", "", ""); func = RNA_def_function(srna, "bake", NULL); RNA_def_function_ui_description(func, "Bake passes"); diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h index f789ab702fe..fd3e5d5a558 100644 --- a/source/blender/render/extern/include/RE_engine.h +++ b/source/blender/render/extern/include/RE_engine.h @@ -93,7 +93,7 @@ typedef struct RenderEngineType { int flag; void (*update)(struct RenderEngine *engine, struct Main *bmain, struct Depsgraph *depsgraph, struct Scene *scene); - void (*render_to_image)(struct RenderEngine *engine, struct Depsgraph *depsgraph); + void (*render_to_image)(struct RenderEngine *engine, struct Main *bmain, struct Scene *scene); void (*bake)(struct RenderEngine *engine, struct Scene *scene, struct Object *object, const int pass_type, const int pass_filter, const int object_id, const struct BakePixel *pixel_array, const int num_pixels, const int depth, void *result); diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c index ddf128c0fbc..467f26f59e3 100644 --- a/source/blender/render/intern/source/external_engine.c +++ b/source/blender/render/intern/source/external_engine.c @@ -740,7 +740,7 @@ int RE_engine_render(Render *re, int do_all) } if (type->render_to_image) { - type->render_to_image(engine, re->depsgraph); + type->render_to_image(engine, re->main, re->scene); } engine->tile_x = 0; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs