[Bf-blender-cvs] [292685ea39b] blender-v2.92-release: Fix T84878: Eevee cryptomatte broken with stereoscopy

Jeroen Bakker noreply at git.blender.org
Mon Jan 25 09:43:29 CET 2021


Commit: 292685ea39b4e358c87412e41fb1504378ac23bf
Author: Jeroen Bakker
Date:   Mon Jan 25 09:40:03 2021 +0100
Branches: blender-v2.92-release
https://developer.blender.org/rB292685ea39b4e358c87412e41fb1504378ac23bf

Fix T84878: Eevee cryptomatte broken with stereoscopy

During multiview rendering the `cryptomatte_accum_buffer` is not cleared
between the views and leaves artifacts on the next view to be rendered.
This change clears the accum buffer when it already exists and will be
reused for the next view.

===================================================================

M	source/blender/draw/engines/eevee/eevee_cryptomatte.c

===================================================================

diff --git a/source/blender/draw/engines/eevee/eevee_cryptomatte.c b/source/blender/draw/engines/eevee/eevee_cryptomatte.c
index 91a230e987c..90948d67895 100644
--- a/source/blender/draw/engines/eevee/eevee_cryptomatte.c
+++ b/source/blender/draw/engines/eevee/eevee_cryptomatte.c
@@ -161,6 +161,14 @@ void EEVEE_cryptomatte_output_init(EEVEE_ViewLayerData *UNUSED(sldata),
     g_data->cryptomatte_download_buffer = MEM_malloc_arrayN(
         sizeof(float), buffer_size * num_cryptomatte_layers, __func__);
   }
+  else {
+    /* During multiview rendering the `cryptomatte_accum_buffer` is deallocated after all views
+     * have been rendered. Clear it here to be reused by the next view. */
+    memset(g_data->cryptomatte_accum_buffer,
+           0,
+           buffer_size * eevee_cryptomatte_pixel_stride(view_layer) *
+               sizeof(EEVEE_CryptomatteSample));
+  }
 
   DRW_texture_ensure_fullscreen_2d(&txl->cryptomatte, format, 0);
   GPU_framebuffer_ensure_config(&fbl->cryptomatte_fb,



More information about the Bf-blender-cvs mailing list