diff options
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_effects.c')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_effects.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_effects.c b/source/blender/draw/engines/eevee/eevee_effects.c index a4d3bc5b276..a8b4159e030 100644 --- a/source/blender/draw/engines/eevee/eevee_effects.c +++ b/source/blender/draw/engines/eevee/eevee_effects.c @@ -533,22 +533,30 @@ void EEVEE_draw_alpha_checker(EEVEE_Data *vedata) } } -void EEVEE_draw_effects(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata) +static void EEVEE_velocity_resolve(EEVEE_Data *vedata) { EEVEE_PassList *psl = vedata->psl; - EEVEE_TextureList *txl = vedata->txl; EEVEE_FramebufferList *fbl = vedata->fbl; EEVEE_StorageList *stl = vedata->stl; EEVEE_EffectsInfo *effects = stl->effects; - /* First resolve the velocity. */ if ((effects->enabled_effects & EFFECT_VELOCITY_BUFFER) != 0) { + DefaultTextureList *dtxl = DRW_viewport_texture_list_get(); + e_data.depth_src = dtxl->depth; DRW_viewport_matrix_get(effects->velocity_curr_persinv, DRW_MAT_PERSINV); GPU_framebuffer_bind(fbl->velocity_resolve_fb); DRW_draw_pass(psl->velocity_resolve); } DRW_viewport_matrix_get(effects->velocity_past_persmat, DRW_MAT_PERS); +} + +void EEVEE_draw_effects(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata) +{ + EEVEE_TextureList *txl = vedata->txl; + EEVEE_FramebufferList *fbl = vedata->fbl; + EEVEE_StorageList *stl = vedata->stl; + EEVEE_EffectsInfo *effects = stl->effects; /* only once per frame after the first post process */ effects->swap_double_buffer = ((effects->enabled_effects & EFFECT_DOUBLE_BUFFER) != 0); @@ -560,6 +568,14 @@ void EEVEE_draw_effects(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata) /* Post process stack (order matters) */ EEVEE_motion_blur_draw(vedata); EEVEE_depth_of_field_draw(vedata); + + /* NOTE: Lookdev drawing happens before TAA but after + * motion blur and dof to avoid distortions. + * Velocity resolve use a hack to exclude lookdev + * balls from creating shimering reprojection vectors. */ + EEVEE_lookdev_draw(vedata); + EEVEE_velocity_resolve(vedata); + EEVEE_temporal_sampling_draw(vedata); EEVEE_bloom_draw(vedata); |