diff options
author | Jeroen Bakker <jbakker> | 2021-01-05 16:59:45 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2021-01-05 17:03:05 +0300 |
commit | 1f41bdc6f37fd091bb5649436f68335b10ade51f (patch) | |
tree | 699848cf8bff58bdf0e6d6b3cba54aa0d6a5e717 /source/blender/draw/engines/eevee/eevee_engine.c | |
parent | 7cd6f667e33e60f3d53e465023bb75f90f499b07 (diff) |
Eevee Cryptomatte: Store hashes in render result meta data
Stores cryptomatte hashes as meta data to the render result. Compositors could
use this for lookup on names in stead of hashes.
Differential Revision: https://developer.blender.org/D9553
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_engine.c')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_engine.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c index f233b0fda96..c6760de5cfa 100644 --- a/source/blender/draw/engines/eevee/eevee_engine.c +++ b/source/blender/draw/engines/eevee/eevee_engine.c @@ -570,8 +570,6 @@ static void eevee_render_to_image(void *vedata, EEVEE_motion_blur_data_free(&ved->stl->effects->motion_blur); if (RE_engine_test_break(engine)) { - /* Cryptomatte buffers are freed during render_read_result */ - EEVEE_cryptomatte_free(vedata); return; } @@ -586,6 +584,16 @@ static void eevee_render_to_image(void *vedata, } } +static void eevee_store_metadata(void *vedata, struct RenderResult *render_result) +{ + EEVEE_Data *ved = (EEVEE_Data *)vedata; + EEVEE_PrivateData *g_data = ved->stl->g_data; + if (g_data->render_passes & EEVEE_RENDER_PASS_CRYPTOMATTE) { + EEVEE_cryptomatte_store_metadata(ved, render_result); + EEVEE_cryptomatte_free(ved); + } +} + static void eevee_engine_free(void) { EEVEE_shaders_free(); @@ -611,6 +619,7 @@ DrawEngineType draw_engine_eevee_type = { &eevee_view_update, &eevee_id_update, &eevee_render_to_image, + &eevee_store_metadata, }; RenderEngineType DRW_engine_viewport_eevee_type = { |