diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2019-07-03 10:01:17 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2019-07-04 16:41:36 +0300 |
commit | e2bf240cbf5e806eddbc64987bb73adc4233e79e (patch) | |
tree | e4320a3af5045a6967ff5a57b0ab6e62eecdcb73 /source/blender/draw/intern/draw_manager.c | |
parent | 2ee257e2c34fecbeca798cfcb22b60903e50fcd2 (diff) |
GreasePencil: Image render artifacts
When doing image rendering with grease pencil, it reused the view of
workbench or EEVEE. These views might be offsetted due to TAA.
This shifted the view a tiny bit. We will not reset the view in between
render engines.
Reviewed By: fclem
Differential Revision: https://developer.blender.org/D5171
Diffstat (limited to 'source/blender/draw/intern/draw_manager.c')
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index f8672a2da37..46f02f04064 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -1916,6 +1916,13 @@ void DRW_render_gpencil(struct RenderEngine *engine, struct Depsgraph *depsgraph DST.buffer_finish_called = false; } +static void drw_view_reset() +{ + DST.view_default = NULL; + DST.view_active = NULL; + DST.view_previous = NULL; +} + void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) { Scene *scene = DEG_get_evaluated_scene(depsgraph); @@ -1998,14 +2005,12 @@ void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) for (RenderView *render_view = render_result->views.first; render_view != NULL; render_view = render_view->next) { RE_SetActiveRenderView(render, render_view->name); - /* Reset the view. */ - DST.view_default = NULL; - DST.view_active = NULL; - DST.view_previous = NULL; + drw_view_reset(); engine_type->draw_engine->render_to_image(data, engine, render_layer, &render_rect); /* grease pencil: render result is merged in the previous render result. */ if (DRW_render_check_grease_pencil(depsgraph)) { DRW_state_reset(); + drw_view_reset(); DRW_render_gpencil_to_image(engine, render_layer, &render_rect); } DST.buffer_finish_called = false; |