diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-04-30 23:23:54 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-05-01 13:09:18 +0300 |
commit | e66629c128258a325ef7d898fb352e3d2552bbcb (patch) | |
tree | 1594b47733dab7e81bf6841549c591df5d4e550c /source/blender/draw/engines/eevee/eevee_temporal_sampling.c | |
parent | b581f1929287381fe9c2761dc514d5bfa7cbe41c (diff) |
Eevee: Lookdev: Cleanup implementation & support for Bloom and TAA
Make Lookdev works with bloom and TAA by rendering it before TAA and fixing
the motion vectors of the lookdev balls.
Rework Lookdev to remove much of its complexity. Use simpler matrices with
more understandable setup code.
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_temporal_sampling.c')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_temporal_sampling.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_temporal_sampling.c b/source/blender/draw/engines/eevee/eevee_temporal_sampling.c index 54ceb1a167a..194fff9b93c 100644 --- a/source/blender/draw/engines/eevee/eevee_temporal_sampling.c +++ b/source/blender/draw/engines/eevee/eevee_temporal_sampling.c @@ -131,6 +131,14 @@ static void eevee_create_cdf_table_temporal_sampling(void) e_data.inited = true; } +void EEVEE_temporal_sampling_offset_calc(const double ht_point[2], + const float filter_size, + float r_offset[2]) +{ + r_offset[0] = eval_table(e_data.inverted_cdf, (float)(ht_point[0])) * filter_size; + r_offset[1] = eval_table(e_data.inverted_cdf, (float)(ht_point[1])) * filter_size; +} + void EEVEE_temporal_sampling_matrices_calc(EEVEE_EffectsInfo *effects, float viewmat[4][4], float persmat[4][4], @@ -141,13 +149,11 @@ void EEVEE_temporal_sampling_matrices_calc(EEVEE_EffectsInfo *effects, Scene *scene = draw_ctx->scene; RenderData *rd = &scene->r; - float filter_size = rd->gauss; /* Sigh.. Stupid legacy naming. */ - - float ofs_x = eval_table(e_data.inverted_cdf, (float)(ht_point[0])) * filter_size; - float ofs_y = eval_table(e_data.inverted_cdf, (float)(ht_point[1])) * filter_size; + float ofs[2]; + EEVEE_temporal_sampling_offset_calc(ht_point, rd->gauss, ofs); window_translate_m4( - effects->overide_winmat, persmat, ofs_x / viewport_size[0], ofs_y / viewport_size[1]); + effects->overide_winmat, persmat, ofs[0] / viewport_size[0], ofs[1] / viewport_size[1]); mul_m4_m4m4(effects->overide_persmat, effects->overide_winmat, viewmat); invert_m4_m4(effects->overide_persinv, effects->overide_persmat); @@ -157,6 +163,7 @@ void EEVEE_temporal_sampling_matrices_calc(EEVEE_EffectsInfo *effects, void EEVEE_temporal_sampling_reset(EEVEE_Data *vedata) { vedata->stl->effects->taa_render_sample = 1; + vedata->stl->effects->taa_current_sample = 1; } int EEVEE_temporal_sampling_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata) |