Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2019-06-14 20:12:39 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-06-14 20:17:06 +0300
commit0707177ab868f1845dba1ecfd396e58c091e89b0 (patch)
treea3ba924b06631c961eb2ec49f9e5c6ca3ac88ae8 /source/blender/draw/engines/eevee/eevee_engine.c
parent486755460ab23f555036537f1ac79037d5e7ef08 (diff)
Fix T64913 Eevee: shader compilation does not reset TAA
This tracks the number of compiling shaders and just reset the TAA if previous number mismatch.
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_engine.c')
-rw-r--r--source/blender/draw/engines/eevee/eevee_engine.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c
index cb2b3763c74..99be7ec631c 100644
--- a/source/blender/draw/engines/eevee/eevee_engine.c
+++ b/source/blender/draw/engines/eevee/eevee_engine.c
@@ -60,6 +60,7 @@ static void eevee_engine_init(void *ved)
stl->g_data->background_alpha = DRW_state_draw_background() ? 1.0f : 0.0f;
stl->g_data->valid_double_buffer = (txl->color_double_buffer != NULL);
stl->g_data->valid_taa_history = (txl->taa_history != NULL);
+ stl->g_data->queued_shaders_count = 0;
/* Main Buffer */
DRW_texture_ensure_fullscreen_2d(&txl->color, GPU_RGBA16F, DRW_TEX_FILTER | DRW_TEX_MIPMAP);
@@ -145,6 +146,7 @@ void EEVEE_cache_populate(void *vedata, Object *ob)
static void eevee_cache_finish(void *vedata)
{
EEVEE_ViewLayerData *sldata = EEVEE_view_layer_data_ensure();
+ EEVEE_PrivateData *g_data = ((EEVEE_Data *)vedata)->stl->g_data;
EEVEE_volumes_cache_finish(sldata, vedata);
EEVEE_materials_cache_finish(sldata, vedata);
@@ -153,6 +155,13 @@ static void eevee_cache_finish(void *vedata)
EEVEE_effects_draw_init(sldata, vedata);
EEVEE_volumes_draw_init(sldata, vedata);
+
+ /* Restart taa if a shader has finish compiling. */
+ /* HACK We should use notification of some sort from the compilation job instead. */
+ if (g_data->queued_shaders_count != g_data->queued_shaders_count_prev) {
+ g_data->queued_shaders_count_prev = g_data->queued_shaders_count;
+ EEVEE_temporal_sampling_reset(vedata);
+ }
}
/* As renders in an HDR offscreen buffer, we need draw everything once