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

Reply via email to