[Bf-blender-cvs] [23f5f28a157] greasepencil-object: Adapt grease pencil render code after last merge
Antonio Vazquez
noreply at git.blender.org
Tue Feb 20 17:02:29 CET 2018
Commit: 23f5f28a157c2948fe1b5e9ee26a3aa06669f003
Author: Antonio Vazquez
Date: Tue Feb 20 17:01:49 2018 +0100
Branches: greasepencil-object
https://developer.blender.org/rB23f5f28a157c2948fe1b5e9ee26a3aa06669f003
Adapt grease pencil render code after last merge
===================================================================
M source/blender/draw/engines/gpencil/gpencil_engine.c
M source/blender/draw/intern/DRW_render.h
M source/blender/draw/intern/draw_manager.c
===================================================================
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c
index 6c5f1861769..0c14c0228cb 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.c
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.c
@@ -1070,15 +1070,16 @@ static void GPENCIL_render_result_combined(RenderResult *rr, const char *viewnam
}
/* render grease pencil to image */
-static void GPENCIL_render_to_image(void *vedata, struct RenderEngine *engine, struct Depsgraph *depsgraph)
+static void GPENCIL_render_to_image(void *vedata, RenderEngine *engine, struct RenderResult *render_result, struct RenderLayer *render_layer)
{
const char *viewname = RE_GetActiveRenderView(engine->re);
-
+ const DRWContextState *draw_ctx = DRW_context_state_get();
+ RenderResult *rr = render_result;
+ int imgsize = rr->rectx * rr->recty;
+
/* save previous render data */
- RenderResult *rr_src = RE_engine_get_result(engine);
- RenderLayer *rl_src = rr_src->layers.first;
- RenderPass *rp_color_src = RE_pass_find_by_name(rl_src, RE_PASSNAME_COMBINED, viewname);
- RenderPass *rp_depth_src = RE_pass_find_by_name(rl_src, RE_PASSNAME_Z, viewname);
+ RenderPass *rp_color_src = RE_pass_find_by_name(render_layer, RE_PASSNAME_COMBINED, viewname);
+ RenderPass *rp_depth_src = RE_pass_find_by_name(render_layer, RE_PASSNAME_Z, viewname);
float *rect_color_src = NULL;
float *rect_depth_src = NULL;
if ((rp_color_src) && (rp_depth_src) && (rp_color_src->rect) && (rp_depth_src->rect)) {
@@ -1090,13 +1091,8 @@ static void GPENCIL_render_to_image(void *vedata, struct RenderEngine *engine, s
printf("Warning: To render grease pencil, enable Combined and Z passes.\n");
}
- int imgsize = rr_src->rectx * rr_src->recty;
-
- const float *render_size = DRW_viewport_size_get();
- RenderResult *rr = RE_engine_begin_result(engine, 0, 0, (int)render_size[0], (int)render_size[1], NULL, viewname);
-
GPENCIL_engine_init(vedata);
- GPENCIL_render_init(vedata, engine, depsgraph);
+ GPENCIL_render_init(vedata, engine, draw_ctx->depsgraph);
GPENCIL_FramebufferList *fbl = ((GPENCIL_Data *)vedata)->fbl;
if (fbl->main) {
@@ -1109,7 +1105,7 @@ static void GPENCIL_render_to_image(void *vedata, struct RenderEngine *engine, s
}
/* loop all objects and draw */
- DRW_render_object_iter(vedata, engine, depsgraph, GPENCIL_render_cache);
+ DRW_render_object_iter(vedata, engine, draw_ctx->depsgraph, GPENCIL_render_cache);
GPENCIL_cache_finish(vedata);
GPENCIL_draw_scene(vedata);
@@ -1125,13 +1121,10 @@ static void GPENCIL_render_to_image(void *vedata, struct RenderEngine *engine, s
DRW_framebuffer_texture_detach(e_data.render_color_tx);
}
- RE_engine_end_result(engine, rr, false, false, false);
-
/* merge previous render image with new GP image */
if (rect_color_src) {
- rl_src = rr_src->layers.first;
- RenderPass *rp_color_gp = RE_pass_find_by_name(rl_src, RE_PASSNAME_COMBINED, viewname);
- RenderPass *rp_depth_gp = RE_pass_find_by_name(rl_src, RE_PASSNAME_Z, viewname);
+ RenderPass *rp_color_gp = RE_pass_find_by_name(render_layer, RE_PASSNAME_COMBINED, viewname);
+ RenderPass *rp_depth_gp = RE_pass_find_by_name(render_layer, RE_PASSNAME_Z, viewname);
float *rect_color_gp = rp_color_gp->rect;
float *rect_depth_gp = rp_depth_gp->rect;
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index d820bbbf638..68fa7b8a7be 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -412,7 +412,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_gpencil_to_image(struct RenderEngine *re, struct Depsgraph *depsgraph);
+void DRW_render_gpencil_to_image(struct RenderEngine *engine, struct RenderResult *render_result, struct RenderLayer *render_layer);
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 ed1dc2eef29..1ed501ff872 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -3651,18 +3651,19 @@ static bool DRW_render_check_object_type(struct Depsgraph *depsgraph, short obty
return false;
}
-void DRW_render_gpencil_to_image(RenderEngine *re, struct Depsgraph *depsgraph)
+void DRW_render_gpencil_to_image(RenderEngine *engine, struct RenderResult *render_result, struct RenderLayer *render_layer)
{
+ const DRWContextState *draw_ctx = DRW_context_state_get();
+
if (draw_engine_gpencil_type.render_to_image) {
- if (DRW_render_check_object_type(depsgraph, OB_GPENCIL)) {
+ if (DRW_render_check_object_type(draw_ctx->depsgraph, OB_GPENCIL)) {
ViewportEngineData *gpdata = DRW_viewport_engine_data_ensure(&draw_engine_gpencil_type);
- draw_engine_gpencil_type.render_to_image(gpdata, re, depsgraph);
+ draw_engine_gpencil_type.render_to_image(gpdata, engine, render_result, render_layer);
}
}
-
}
-void DRW_render_to_image(RenderEngine *re, struct Depsgraph *depsgraph)
+void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph)
{
Scene *scene = DEG_get_evaluated_scene(depsgraph);
RenderEngineType *engine_type = engine->type;
@@ -3718,13 +3719,15 @@ void DRW_render_to_image(RenderEngine *re, struct Depsgraph *depsgraph)
DST.draw_ctx.depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
engine_type->draw_engine->render_to_image(data, engine, render_result, render_layer);
+
+ /* grease pencil: render result is merged in the previous render result. */
+ DRW_render_gpencil_to_image(engine, render_result, render_layer);
+
DST.buffer_finish_called = false;
}
}
RE_engine_end_result(engine, render_result, false, false, false);
- /* grease pencil: render result is merged in the previous render result. */
- DRW_render_gpencil_to_image(re, depsgraph);
DST.buffer_finish_called = false;
More information about the Bf-blender-cvs
mailing list