Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <jbakker>2020-03-17 10:57:04 +0300
committerJeroen Bakker <jeroen@blender.org>2020-03-20 09:47:04 +0300
commit8ba9efb7d8ff399aaf3c65fd14272d0bc6f2ab39 (patch)
tree9a515c7fd5748f151e086bcdf33700961334cd0c /source/blender/draw/engines/gpencil/gpencil_render.c
parent4fc45c7a2b75df1a0e07150c101b664e189550b7 (diff)
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
Diffstat (limited to 'source/blender/draw/engines/gpencil/gpencil_render.c')
-rw-r--r--source/blender/draw/engines/gpencil/gpencil_render.c19
1 files changed, 15 insertions, 4 deletions
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,
{