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:
authorJeroen Bakker <j.bakker@atmind.nl>2019-03-19 15:29:22 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2019-03-19 15:29:51 +0300
commit0aca8b017436395fc3af62d6265d16fd6d531f1a (patch)
tree9df276fe4f8a604bf6b68af5032372d90ea0571b /source/blender/draw/engines/eevee/eevee_lookdev.c
parentb0c6c9f11df79bfa4d49e11e2f36eb1e96f9b679 (diff)
EEVEE/LookDev: Fix Cache In Quad View
When using LookDev in Quad view the cache was only updated for the first Q-view. The evaluation data of the last cache was not stored with the lightprobe textures. As the evaluation data was reused between the Q-views only the lightprobe textures of the first view was updated. With this patch the evaluated data is stored amongside the actual lightprobe textures. Fix T59046 Reviewed By: fclem Maniphest Tasks: T59046
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_lookdev.c')
-rw-r--r--source/blender/draw/engines/eevee/eevee_lookdev.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_lookdev.c b/source/blender/draw/engines/eevee/eevee_lookdev.c
index 2f89476e832..b07b20386a8 100644
--- a/source/blender/draw/engines/eevee/eevee_lookdev.c
+++ b/source/blender/draw/engines/eevee/eevee_lookdev.c
@@ -41,6 +41,7 @@
static void eevee_lookdev_lightcache_delete(EEVEE_Data *vedata)
{
EEVEE_StorageList *stl = vedata->stl;
+ EEVEE_PrivateData *g_data = stl->g_data;
EEVEE_TextureList *txl = vedata->txl;
MEM_SAFE_FREE(stl->lookdev_lightcache);
@@ -48,6 +49,8 @@ static void eevee_lookdev_lightcache_delete(EEVEE_Data *vedata)
MEM_SAFE_FREE(stl->lookdev_cube_data);
DRW_TEXTURE_FREE_SAFE(txl->lookdev_grid_tx);
DRW_TEXTURE_FREE_SAFE(txl->lookdev_cube_tx);
+ g_data->studiolight_index = -1;
+ g_data->studiolight_rot_z = 0.0f;
}
void EEVEE_lookdev_cache_init(
@@ -57,6 +60,7 @@ void EEVEE_lookdev_cache_init(
{
EEVEE_StorageList *stl = vedata->stl;
EEVEE_TextureList *txl = vedata->txl;
+ EEVEE_PrivateData *g_data = stl->g_data;
const DRWContextState *draw_ctx = DRW_context_state_get();
View3D *v3d = draw_ctx->v3d;
if (LOOK_DEV_STUDIO_LIGHT_ENABLED(v3d)) {
@@ -132,13 +136,12 @@ void EEVEE_lookdev_cache_init(
DRW_shgroup_uniform_texture(*grp, "image", tex);
/* Do we need to recalc the lightprobes? */
- if (pinfo &&
- ((pinfo->studiolight_index != sl->index) ||
- (pinfo->studiolight_rot_z != v3d->shading.studiolight_rot_z)))
+ if (g_data->studiolight_index != sl->index ||
+ g_data->studiolight_rot_z != v3d->shading.studiolight_rot_z)
{
stl->lookdev_lightcache->flag |= LIGHTCACHE_UPDATE_WORLD;
- pinfo->studiolight_index = sl->index;
- pinfo->studiolight_rot_z = v3d->shading.studiolight_rot_z;
+ g_data->studiolight_index = sl->index;
+ g_data->studiolight_rot_z = v3d->shading.studiolight_rot_z;
}
}
}