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
This commit is contained in:
parent
b0c6c9f11d
commit
0aca8b0174
Notes:
blender-bot
2023-02-14 06:05:22 +01:00
Referenced by issue #59046, LookDev HDRI changes are applied only to one quad in 3D Viewport Quad view
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -486,8 +486,6 @@ typedef struct EEVEE_LightProbesInfo {
|
|||
float visibility_blur;
|
||||
float intensity_fac;
|
||||
int shres;
|
||||
int studiolight_index;
|
||||
float studiolight_rot_z;
|
||||
EEVEE_LightProbeVisTest planar_vis_tests[MAX_PLANAR];
|
||||
/* UBO Storage : data used by UBO */
|
||||
EEVEE_LightProbe probe_data[MAX_PROBE];
|
||||
|
@ -818,6 +816,11 @@ typedef struct EEVEE_PrivateData {
|
|||
|
||||
/* Color Management */
|
||||
bool use_color_render_settings;
|
||||
|
||||
/* LookDev Settings */
|
||||
int studiolight_index;
|
||||
float studiolight_rot_z;
|
||||
|
||||
} EEVEE_PrivateData; /* Transient data */
|
||||
|
||||
/* eevee_data.c */
|
||||
|
|
Loading…
Reference in New Issue