diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2019-05-16 12:40:07 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2019-05-16 17:02:56 +0300 |
commit | d93a47b7bbdac3afd8003254c8606a8c43154c80 (patch) | |
tree | 160eadbe004dce6bb93079119b6c70fa886a9d1d /source/blender/draw/engines/eevee/eevee_engine.c | |
parent | 3b5126038785ef2333627fad07e498d0eb718ac8 (diff) |
EEVEE: Viewport Rendering TAA
EEVEE assumed that the OGL renderer did FSAA, as the FSAA was removed we
needed to revalidate this assumption. The temporal sampling only inited
the matrices during init phase. As now we need to update the matrices
for every sample rendered the code for updating the matrices was
isolated in a new function `EEVEE_temporal_sampling_update_matrices`.
Reviewed By: fclem
Maniphest Tasks: T64646
Differential Revision: https://developer.blender.org/D4871
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_engine.c')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_engine.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c index 26f33f4db31..68dc9ef52a9 100644 --- a/source/blender/draw/engines/eevee/eevee_engine.c +++ b/source/blender/draw/engines/eevee/eevee_engine.c @@ -219,6 +219,14 @@ static void eevee_draw_background(void *vedata) DRW_viewport_matrix_override_set(stl->effects->overide_wininv, DRW_MAT_WININV); } + /* when doing viewport rendering the overrides needs to be recalculated for + * every loop as this normally happens once inside + * `EEVEE_temporal_sampling_init` */ + else if (((stl->effects->enabled_effects & EFFECT_TAA) != 0) && + (stl->effects->taa_current_sample > 1) && DRW_state_is_image_render()) { + EEVEE_temporal_sampling_update_matrices(vedata); + } + /* Refresh Probes */ DRW_stats_group_start("Probes Refresh"); EEVEE_lightprobes_refresh(sldata, vedata); @@ -297,7 +305,7 @@ static void eevee_draw_background(void *vedata) EEVEE_draw_effects(sldata, vedata); DRW_stats_group_end(); - if ((stl->effects->taa_current_sample > 1) && !DRW_state_is_image_render()) { + if ((stl->effects->taa_current_sample > 1)) { DRW_viewport_matrix_override_unset_all(); } } |