diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-03-12 17:53:10 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-03-12 18:01:23 +0300 |
commit | e28f0f179d2a4c5f547c8fce6f010e7b733d6887 (patch) | |
tree | 2b3ed840f0cf4d9cd2f65f77507694e03074de34 /source | |
parent | aaeca5d87244bca2832b86d60457f0568acf1427 (diff) |
Fix T62279: Rendering simple geometry corrupts with greasepencil layer
This was caused by a missing state reset. Also adding safety state reset
before and after drawing (might not be necessary).
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 949e049ca80..c409d015330 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -1876,6 +1876,9 @@ void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) BLI_rcti_init(&render_rect, 0, size[0], 0, size[1]); } + /* Reset state before drawing */ + DRW_state_reset(); + /* Init render result. */ RenderResult *render_result = RE_engine_begin_result( engine, @@ -1895,6 +1898,7 @@ void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) 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_render_gpencil_to_image(engine, render_layer, &render_rect); } DST.buffer_finish_called = false; @@ -1913,6 +1917,9 @@ void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) drw_state_ensure_not_reused(&DST); #endif + /* Reset state after drawing */ + DRW_state_reset(); + /* Changing Context */ if (re_gl_context != NULL) { DRW_gawain_render_context_disable(re_gpu_context); |