Commit: 252c663d85f081d76a071401d5261efa387c7a6b Author: Dalai Felinto Date: Mon Feb 26 11:22:11 2018 -0300 Branches: temp-render-depsgraph https://developer.blender.org/rB252c663d85f081d76a071401d5261efa387c7a6b
>From review: render_to_image should not get RenderLayer =================================================================== 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 9eeed0b2a4d..203fb80c0a0 100644 --- a/source/blender/draw/intern/DRW_render.h +++ b/source/blender/draw/intern/DRW_render.h @@ -410,7 +410,7 @@ struct DefaultTextureList *DRW_viewport_texture_list_get(void); void DRW_viewport_request_redraw(void); -void DRW_render_to_image(struct RenderEngine *engine, struct Depsgraph *graph, struct RenderLayer *render_layer); +void DRW_render_to_image(struct RenderEngine *engine, struct Depsgraph *graph); 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 6958a09aaab..d8330308e90 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -3618,7 +3618,7 @@ void DRW_draw_render_loop_offscreen( GPU_offscreen_bind(ofs, false); } -void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph, RenderLayer *render_layer) +void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) { Scene *scene = DEG_get_evaluated_scene(depsgraph); ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph); @@ -3659,8 +3659,27 @@ void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph, Rend BLI_rcti_init(&render_rect, 0, size[0], 0, size[1]); } - engine_type->draw_engine->render_to_image(data, engine, render_layer, &render_rect); - DST.buffer_finish_called = false; + /* Init render result. */ + RenderResult *render_result = RE_engine_begin_result( + engine, + 0, + 0, + (int)size[0], + (int)size[1], + view_layer->name, + /* RR_ALL_VIEWS */ NULL); + + RenderLayer *render_layer = render_result->layers.first; + for (RenderView *render_view = render_result->views.first; + render_view != NULL; + render_view = render_view->next) + { + RE_SetActiveRenderView(render, render_view->name); + engine_type->draw_engine->render_to_image(data, engine, render_layer, &render_rect); + DST.buffer_finish_called = false; + } + + RE_engine_end_result(engine, render_result, false, false, false); /* Force cache to reset. */ drw_viewport_cache_resize(); diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index f420852b7e4..99567872103 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -165,7 +165,7 @@ static void engine_update(RenderEngine *engine, Main *bmain, Scene *scene) RNA_parameter_list_free(&list); } -static void engine_render_to_image(RenderEngine *engine, Depsgraph *depsgraph, RenderLayer *render_layer) +static void engine_render_to_image(RenderEngine *engine, Depsgraph *depsgraph) { extern FunctionRNA rna_RenderEngine_render_to_image_func; PointerRNA ptr; @@ -177,7 +177,6 @@ static void engine_render_to_image(RenderEngine *engine, Depsgraph *depsgraph, R RNA_parameter_list_create(&list, &ptr, func); RNA_parameter_set_lookup(&list, "depsgraph", &depsgraph); - RNA_parameter_set_lookup(&list, "render_layer", &render_layer); engine->type->ext.call(NULL, &ptr, func, &list); RNA_parameter_list_free(&list); @@ -509,7 +508,6 @@ static void rna_def_render_engine(BlenderRNA *brna) 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, "depsgraph", "Depsgraph", "", ""); - RNA_def_pointer(func, "render_layer", "RenderLayer", "", ""); 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 30228b70137..b1e5ff9890b 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 Scene *scene); - void (*render_to_image)(struct RenderEngine *engine, struct Depsgraph *depsgraph, struct RenderLayer *render_layer); + void (*render_to_image)(struct RenderEngine *engine, struct Depsgraph *depsgraph); 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 53a60cb13e6..61ed19a1c9a 100644 --- a/source/blender/render/intern/source/external_engine.c +++ b/source/blender/render/intern/source/external_engine.c @@ -739,39 +739,25 @@ int RE_engine_render(Render *re, int do_all) } if (type->render_to_image) { - /* make render result */ - const int size[2] = {(re->r.size * re->r.xsch) / 100, (re->r.size * re->r.ysch) / 100}; - RenderResult *render_result = RE_engine_begin_result(engine, 0, 0, (int)size[0], (int)size[1], RR_ALL_LAYERS, RR_ALL_VIEWS); - - for (RenderLayer *render_layer = render_result->layers.first; - render_layer != NULL; - render_layer = render_layer->next) + FOREACH_VIEW_LAYER_TO_RENDER(re, view_layer_iter) { EvaluationContext *eval_ctx = DEG_evaluation_context_new(DAG_EVAL_RENDER); Depsgraph *depsgraph = DEG_graph_new(); - ViewLayer *view_layer = (ViewLayer *)BLI_findstring(&re->scene->view_layers, render_layer->name, offsetof(ViewLayer, name)); + ViewLayer *view_layer = BLI_findstring(&re->scene->view_layers, view_layer_iter->name, offsetof(ViewLayer, name)); DEG_evaluation_context_init_from_view_layer_for_render( - eval_ctx, - depsgraph, - re->scene, - view_layer); + eval_ctx, + depsgraph, + re->scene, + view_layer); BKE_scene_graph_update_tagged(eval_ctx, depsgraph, re->main, re->scene, view_layer); - - for (RenderView *render_view = render_result->views.first; - render_view != NULL; - render_view = render_view->next) - { - RE_SetActiveRenderView(re, render_view->name); - type->render_to_image(engine, depsgraph, render_layer); - } + type->render_to_image(engine, depsgraph); DEG_graph_free(depsgraph); DEG_evaluation_context_free(eval_ctx); } - - RE_engine_end_result(engine, render_result, false, false, false); + FOREACH_VIEW_LAYER_TO_RENDER_END } engine->tile_x = 0; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs