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 <jeroen@blender.org>2021-01-25 11:40:03 +0300
committerJeroen Bakker <jeroen@blender.org>2021-01-25 11:40:03 +0300
commit292685ea39b4e358c87412e41fb1504378ac23bf (patch)
tree8d579bd8e3540113acc0b21e19009553f20d6560 /source/blender/draw/engines/eevee/eevee_cryptomatte.c
parent7f9ed0178ade69cdd17c18ea3ab41bdd3cf88ab6 (diff)
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.
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_cryptomatte.c')
-rw-r--r--source/blender/draw/engines/eevee/eevee_cryptomatte.c8
1 files changed, 8 insertions, 0 deletions
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,