diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-01-29 21:39:53 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-01-30 00:00:15 +0300 |
commit | f107af351988ab93aeccad33b1d09b536844c05c (patch) | |
tree | 7caeca024d81bbe7fd83a52918aaaa8f61ee89a8 /source/blender/draw/engines/eevee/eevee_temporal_sampling.c | |
parent | 8cce33913162b44bfbfca523f30d546bf956fd52 (diff) |
Eevee: Add support for TAA/SuperSampling for final render.
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_temporal_sampling.c')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_temporal_sampling.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_temporal_sampling.c b/source/blender/draw/engines/eevee/eevee_temporal_sampling.c index f4bf554f5b3..24b8117b6f5 100644 --- a/source/blender/draw/engines/eevee/eevee_temporal_sampling.c +++ b/source/blender/draw/engines/eevee/eevee_temporal_sampling.c @@ -44,6 +44,23 @@ static void eevee_create_shader_temporal_sampling(void) e_data.taa_resolve_sh = DRW_shader_create_fullscreen(datatoc_effect_temporal_aa_glsl, NULL); } +void EEVEE_temporal_sampling_matrices_calc( + EEVEE_EffectsInfo *effects, float viewmat[4][4], float persmat[4][4], double ht_point[2]) +{ + const float *viewport_size = DRW_viewport_size_get(); + + /* TODO Blackman-Harris filter */ + + window_translate_m4( + effects->overide_winmat, persmat, + ((float)(ht_point[0]) * 2.0f - 1.0f) / viewport_size[0], + ((float)(ht_point[1]) * 2.0f - 1.0f) / viewport_size[1]); + + mul_m4_m4m4(effects->overide_persmat, effects->overide_winmat, viewmat); + invert_m4_m4(effects->overide_persinv, effects->overide_persmat); + invert_m4_m4(effects->overide_wininv, effects->overide_winmat); +} + int EEVEE_temporal_sampling_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata) { EEVEE_StorageList *stl = vedata->stl; @@ -110,14 +127,7 @@ int EEVEE_temporal_sampling_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data BLI_halton_2D(ht_primes, ht_offset, effects->taa_current_sample - 1, ht_point); - window_translate_m4( - effects->overide_winmat, persmat, - ((float)(ht_point[0]) * 2.0f - 1.0f) / viewport_size[0], - ((float)(ht_point[1]) * 2.0f - 1.0f) / viewport_size[1]); - - mul_m4_m4m4(effects->overide_persmat, effects->overide_winmat, viewmat); - invert_m4_m4(effects->overide_persinv, effects->overide_persmat); - invert_m4_m4(effects->overide_wininv, effects->overide_winmat); + EEVEE_temporal_sampling_matrices_calc(effects, viewmat, persmat, ht_point); DRW_viewport_matrix_override_set(effects->overide_persmat, DRW_MAT_PERS); DRW_viewport_matrix_override_set(effects->overide_persinv, DRW_MAT_PERSINV); |