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-05-10 13:51:44 +0300
committerJeroen Bakker <jeroen@blender.org>2021-05-10 14:33:34 +0300
commit6cd4bb94350a9395da143fe90d9e600c0196025a (patch)
treec71cc9c8125d18346535faf0f36d83a2284ac60f
parentcaf92a647f763f7fb538a9d9a6a52f7a88cc457e (diff)
Fix T87764: Mem-leak during viewport rendering.
When a scene uses cryptomatte the viewport rendering would lead to a memory leak. The reason was that all image renders (viewport+final) activated cryptomatte. But is only used for final rendering. This patch only activates cryptomatte when doing final rendering.
-rw-r--r--source/blender/draw/engines/eevee/eevee_cryptomatte.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_cryptomatte.c b/source/blender/draw/engines/eevee/eevee_cryptomatte.c
index 0cb2d55d1eb..eace4eb18f6 100644
--- a/source/blender/draw/engines/eevee/eevee_cryptomatte.c
+++ b/source/blender/draw/engines/eevee/eevee_cryptomatte.c
@@ -121,7 +121,7 @@ void EEVEE_cryptomatte_renderpasses_init(EEVEE_Data *vedata)
ViewLayer *view_layer = draw_ctx->view_layer;
/* Cryptomatte is only rendered for final image renders */
- if (!DRW_state_is_image_render()) {
+ if (!DRW_state_is_scene_render()) {
return;
}
const eViewLayerCryptomatteFlags active_layers = eevee_cryptomatte_active_layers(view_layer);
@@ -158,9 +158,9 @@ void EEVEE_cryptomatte_output_init(EEVEE_ViewLayerData *UNUSED(sldata),
const ViewLayer *view_layer = draw_ctx->view_layer;
const int num_cryptomatte_layers = eevee_cryptomatte_layers_count(view_layer);
- eGPUTextureFormat format = (num_cryptomatte_layers == 1) ?
- GPU_R32F :
- (num_cryptomatte_layers == 2) ? GPU_RG32F : GPU_RGBA32F;
+ eGPUTextureFormat format = (num_cryptomatte_layers == 1) ? GPU_R32F :
+ (num_cryptomatte_layers == 2) ? GPU_RG32F :
+ GPU_RGBA32F;
const float *viewport_size = DRW_viewport_size_get();
const int buffer_size = viewport_size[0] * viewport_size[1];