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>2020-11-06 18:44:02 +0300
committerClément Foucault <foucault.clem@gmail.com>2020-11-06 18:44:15 +0300
commit998ae295493fed2538ff2b4f5301487923a4fec3 (patch)
tree45cb876a411e9ea0efeb42fe1b1008f3337a0174
parent8df84f7be48bf64984976edf96f68dc7d7471b76 (diff)
Fix T82220 Missing viewport update after manual "HDRI Preview Size" input
This is caused by the TAA being reset after the init phase, leading to 1 sample being kept as valid when it is clearly not. To fix this, we run the lookdev validation before TAA init. Reviewed By: Jeroen Bakker Differential Revision: https://developer.blender.org/D9452
-rw-r--r--source/blender/draw/engines/eevee/eevee_effects.c4
-rw-r--r--source/blender/draw/engines/eevee/eevee_lookdev.c36
-rw-r--r--source/blender/draw/engines/eevee/eevee_private.h1
3 files changed, 29 insertions, 12 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_effects.c b/source/blender/draw/engines/eevee/eevee_effects.c
index 3b2a3cc7c01..ca583143572 100644
--- a/source/blender/draw/engines/eevee/eevee_effects.c
+++ b/source/blender/draw/engines/eevee/eevee_effects.c
@@ -87,6 +87,10 @@ void EEVEE_effects_init(EEVEE_ViewLayerData *sldata,
stl->effects->taa_render_sample = 1;
}
+ /* WORKAROUND: EEVEE_lookdev_init can reset TAA and needs a stl->effect.
+ * So putting this before EEVEE_temporal_sampling_init for now. */
+ EEVEE_lookdev_init(vedata);
+
effects = stl->effects;
effects->enabled_effects = 0;
diff --git a/source/blender/draw/engines/eevee/eevee_lookdev.c b/source/blender/draw/engines/eevee/eevee_lookdev.c
index 5deaf4d4d68..710d2c70479 100644
--- a/source/blender/draw/engines/eevee/eevee_lookdev.c
+++ b/source/blender/draw/engines/eevee/eevee_lookdev.c
@@ -95,24 +95,13 @@ static void eevee_lookdev_hdri_preview_init(EEVEE_Data *vedata, EEVEE_ViewLayerD
}
}
-void EEVEE_lookdev_cache_init(EEVEE_Data *vedata,
- EEVEE_ViewLayerData *sldata,
- DRWPass *pass,
- EEVEE_LightProbesInfo *pinfo,
- DRWShadingGroup **r_shgrp)
+void EEVEE_lookdev_init(EEVEE_Data *vedata)
{
EEVEE_StorageList *stl = vedata->stl;
- EEVEE_TextureList *txl = vedata->txl;
EEVEE_EffectsInfo *effects = stl->effects;
- EEVEE_PrivateData *g_data = stl->g_data;
const DRWContextState *draw_ctx = DRW_context_state_get();
/* The view will be NULL when rendering previews. */
const View3D *v3d = draw_ctx->v3d;
- const Scene *scene = draw_ctx->scene;
-
- const bool probe_render = pinfo != NULL;
-
- effects->lookdev_view = NULL;
if (eevee_hdri_preview_overlay_enabled(v3d)) {
/* Viewport / Spheres size. */
@@ -142,9 +131,32 @@ void EEVEE_lookdev_cache_init(EEVEE_Data *vedata,
effects->sphere_size = sphere_size;
effects->anchor[0] = rect->xmax;
effects->anchor[1] = rect->ymin;
+ stl->g_data->valid_double_buffer = false;
EEVEE_temporal_sampling_reset(vedata);
}
+ }
+}
+
+void EEVEE_lookdev_cache_init(EEVEE_Data *vedata,
+ EEVEE_ViewLayerData *sldata,
+ DRWPass *pass,
+ EEVEE_LightProbesInfo *pinfo,
+ DRWShadingGroup **r_shgrp)
+{
+ EEVEE_StorageList *stl = vedata->stl;
+ EEVEE_TextureList *txl = vedata->txl;
+ EEVEE_EffectsInfo *effects = stl->effects;
+ EEVEE_PrivateData *g_data = stl->g_data;
+ const DRWContextState *draw_ctx = DRW_context_state_get();
+ /* The view will be NULL when rendering previews. */
+ const View3D *v3d = draw_ctx->v3d;
+ const Scene *scene = draw_ctx->scene;
+
+ const bool probe_render = pinfo != NULL;
+
+ effects->lookdev_view = NULL;
+ if (eevee_hdri_preview_overlay_enabled(v3d)) {
eevee_lookdev_hdri_preview_init(vedata, sldata);
}
diff --git a/source/blender/draw/engines/eevee/eevee_private.h b/source/blender/draw/engines/eevee/eevee_private.h
index 5330ea2f770..7d41028195d 100644
--- a/source/blender/draw/engines/eevee/eevee_private.h
+++ b/source/blender/draw/engines/eevee/eevee_private.h
@@ -1357,6 +1357,7 @@ void EEVEE_render_update_passes(struct RenderEngine *engine,
struct ViewLayer *view_layer);
/** eevee_lookdev.c */
+void EEVEE_lookdev_init(EEVEE_Data *vedata);
void EEVEE_lookdev_cache_init(EEVEE_Data *vedata,
EEVEE_ViewLayerData *sldata,
DRWPass *pass,