From 8ba9efb7d8ff399aaf3c65fd14272d0bc6f2ab39 Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Tue, 17 Mar 2020 08:57:04 +0100 Subject: Fix T74811: GreasePencil Stereo Rendering When using grease pencil in a stereo rendering the grease pencil objects are only visible in the left eye. In the viewport it renders both. Issue is related that `DRW_render_gpencil` only renders a single view. But `DRW_render_to_image` renders all views. This patch puts this in a loop to render both eyes. Reviewed By: fclem Differential Revision: https://developer.blender.org/D7154 --- source/blender/draw/engines/gpencil/gpencil_render.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'source/blender/draw/engines/gpencil/gpencil_render.c') diff --git a/source/blender/draw/engines/gpencil/gpencil_render.c b/source/blender/draw/engines/gpencil/gpencil_render.c index 083b04c0600..496122c0483 100644 --- a/source/blender/draw/engines/gpencil/gpencil_render.c +++ b/source/blender/draw/engines/gpencil/gpencil_render.c @@ -104,10 +104,21 @@ void GPENCIL_render_init(GPENCIL_Data *vedata, /* FIXME(fclem): we have a precision loss in the depth buffer because of this reupload. * Find where it comes from! */ - txl->render_depth_tx = DRW_texture_create_2d( - size[0], size[1], GPU_DEPTH_COMPONENT24, 0, do_region ? NULL : pix_z); - txl->render_color_tx = DRW_texture_create_2d( - size[0], size[1], GPU_RGBA16F, 0, do_region ? NULL : pix_col); + /* In multi view render the textures can be reused. */ + if (txl->render_depth_tx && !do_clear_z) { + GPU_texture_update(txl->render_depth_tx, GPU_DATA_FLOAT, pix_z); + } + else { + txl->render_depth_tx = DRW_texture_create_2d( + size[0], size[1], GPU_DEPTH_COMPONENT24, 0, do_region ? NULL : pix_z); + } + if (txl->render_color_tx && !do_clear_col) { + GPU_texture_update(txl->render_color_tx, GPU_DATA_FLOAT, pix_col); + } + else { + txl->render_color_tx = DRW_texture_create_2d( + size[0], size[1], GPU_RGBA16F, 0, do_region ? NULL : pix_col); + } GPU_framebuffer_ensure_config(&fbl->render_fb, { -- cgit v1.2.3