Eevee: Fix prev_persmat being used by multiple viewport.

This commit is contained in:
2018-02-26 20:08:48 +01:00
parent f4cc9ba4c3
commit c17042bc6d
5 changed files with 8 additions and 4 deletions

View File

@@ -407,7 +407,7 @@ void EEVEE_downsample_cube_buffer(EEVEE_Data *vedata, struct GPUFrameBuffer *fb_
DRW_stats_group_end();
}
void EEVEE_draw_effects(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
void EEVEE_draw_effects(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata)
{
EEVEE_TextureList *txl = vedata->txl;
EEVEE_FramebufferList *fbl = vedata->fbl;
@@ -450,7 +450,7 @@ void EEVEE_draw_effects(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
}
/* Record pers matrix for the next frame. */
DRW_viewport_matrix_get(sldata->common_data.prev_persmat, DRW_MAT_PERS);
DRW_viewport_matrix_get(stl->effects->prev_persmat, DRW_MAT_PERS);
/* Update double buffer status if render mode. */
if (DRW_state_is_image_render()) {

View File

@@ -197,6 +197,8 @@ static void eevee_draw_background(void *vedata)
EEVEE_volumes_set_jitter(sldata, stl->effects->taa_current_sample - 1);
EEVEE_materials_init(sldata, stl, fbl);
}
/* Copy previous persmat to UBO data */
copy_m4_m4(sldata->common_data.prev_persmat, stl->effects->prev_persmat);
/* Refresh Probes */
DRW_stats_group_start("Probes Refresh");

View File

@@ -855,8 +855,6 @@ static void eevee_shadow_cascade_setup(Object *ob, EEVEE_LampsInfo *linfo, EEVEE
float center[3];
frustum_min_bounding_sphere(corners, center, &(sh_data->radius[c]));
printf("\n");
/* Project into lightspace */
invert_m4_m4(viewmat, ob->obmat);
normalize_v3(viewmat[0]);

View File

@@ -514,6 +514,8 @@ typedef struct EEVEE_EffectsInfo {
float dof_bokeh[4];
float dof_layer_select[2];
int dof_target_size[2];
/* Other */
float prev_persmat[4][4];
/* Bloom */
int bloom_iteration_ct;
float source_texel_size[2];

View File

@@ -418,6 +418,8 @@ void EEVEE_render_draw(EEVEE_Data *vedata, RenderEngine *engine, RenderLayer *rl
/* Restore winmat before jittering again. */
copy_m4_m4(stl->effects->overide_winmat, g_data->winmat);
/* Copy previous persmat to UBO data */
copy_m4_m4(sldata->common_data.prev_persmat, stl->effects->prev_persmat);
BLI_halton_3D(primes, offset, stl->effects->taa_current_sample, r);
EEVEE_update_noise(psl, fbl, r);