diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2019-06-26 16:11:16 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2019-06-26 16:13:56 +0300 |
commit | 11dc736033244ae9eeaa94daea3c8d5598d07e76 (patch) | |
tree | d9cf63186a4a67b232d89464fc78456f31f7f9c0 /source/blender/draw/engines/gpencil | |
parent | 6d22633a96a4ef18051ba6a937ed9c1d1e5d967c (diff) |
DrawManager: Sanatize default_view reset
Grease Pencil already reset the default view so the draw_manager wouldn't assert. During multi view rendering the same assert still happened. This patch will reset the default view when starting to render a new view.
Reviewers: fclem
Differential Revision: https://developer.blender.org/D5137
Diffstat (limited to 'source/blender/draw/engines/gpencil')
-rw-r--r-- | source/blender/draw/engines/gpencil/gpencil_engine.h | 1 | ||||
-rw-r--r-- | source/blender/draw/engines/gpencil/gpencil_render.c | 15 |
2 files changed, 8 insertions, 8 deletions
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.h b/source/blender/draw/engines/gpencil/gpencil_engine.h index 957acb8c780..98eaee343bb 100644 --- a/source/blender/draw/engines/gpencil/gpencil_engine.h +++ b/source/blender/draw/engines/gpencil/gpencil_engine.h @@ -186,7 +186,6 @@ typedef struct GPENCIL_Storage { float mix_stroke_factor; /* Render Matrices and data */ - DRWView *view; float view_vecs[2][4]; /* vec4[2] */ int shade_render[2]; diff --git a/source/blender/draw/engines/gpencil/gpencil_render.c b/source/blender/draw/engines/gpencil/gpencil_render.c index 301c29af335..d189ccd322d 100644 --- a/source/blender/draw/engines/gpencil/gpencil_render.c +++ b/source/blender/draw/engines/gpencil/gpencil_render.c @@ -103,17 +103,18 @@ void GPENCIL_render_init(GPENCIL_Data *ved, RenderEngine *engine, struct Depsgra invert_m4_m4(viewmat, viewinv); - DRWView *view = DRW_view_create(viewmat, winmat, NULL, NULL, NULL); - DRW_view_default_set(view); - DRW_view_set_active(view); + /* Reuse the view created by EEVEE or Workbench */ + if (DRW_view_default_get() == NULL) { + DRWView *view = DRW_view_create(viewmat, winmat, NULL, NULL, NULL); + DRW_view_default_set(view); + DRW_view_set_active(view); + } - DRW_view_persmat_get(view, persmat, false); + DRW_view_persmat_get(NULL, persmat, false); /* calculate pixel size for render */ stl->storage->render_pixsize = get_render_pixelsize(persmat, viewport_size[0], viewport_size[1]); - stl->storage->view = view; - /* INIT CACHE */ GPENCIL_cache_init(vedata); } @@ -212,7 +213,7 @@ static void GPENCIL_render_result_z(struct RenderLayer *rl, GPENCIL_render_update_vecs(vedata); float winmat[4][4]; - DRW_view_winmat_get(stl->storage->view, winmat, false); + DRW_view_winmat_get(NULL, winmat, false); /* Convert ogl depth [0..1] to view Z [near..far] */ for (int i = 0; i < BLI_rcti_size_x(rect) * BLI_rcti_size_y(rect); i++) { |