[Bf-blender-cvs] [c17042bc6d4] blender2.8: Eevee: Fix prev_persmat being used by multiple viewport.

Clément Foucault noreply at git.blender.org
Mon Feb 26 20:10:19 CET 2018


Commit: c17042bc6d43de4b71973ea7dcc9ca434363162f
Author: Clément Foucault
Date:   Mon Feb 26 20:08:48 2018 +0100
Branches: blender2.8
https://developer.blender.org/rBc17042bc6d43de4b71973ea7dcc9ca434363162f

Eevee: Fix prev_persmat being used by multiple viewport.

===================================================================

M	source/blender/draw/engines/eevee/eevee_effects.c
M	source/blender/draw/engines/eevee/eevee_engine.c
M	source/blender/draw/engines/eevee/eevee_lights.c
M	source/blender/draw/engines/eevee/eevee_private.h
M	source/blender/draw/engines/eevee/eevee_render.c

===================================================================

diff --git a/source/blender/draw/engines/eevee/eevee_effects.c b/source/blender/draw/engines/eevee/eevee_effects.c
index 751b9a0f7d6..3427bb1d397 100644
--- a/source/blender/draw/engines/eevee/eevee_effects.c
+++ b/source/blender/draw/engines/eevee/eevee_effects.c
@@ -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()) {
diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c
index c1c298417e8..591ee9085c8 100644
--- a/source/blender/draw/engines/eevee/eevee_engine.c
+++ b/source/blender/draw/engines/eevee/eevee_engine.c
@@ -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");
diff --git a/source/blender/draw/engines/eevee/eevee_lights.c b/source/blender/draw/engines/eevee/eevee_lights.c
index 3db7d893f2d..635f713c8ae 100644
--- a/source/blender/draw/engines/eevee/eevee_lights.c
+++ b/source/blender/draw/engines/eevee/eevee_lights.c
@@ -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]);
diff --git a/source/blender/draw/engines/eevee/eevee_private.h b/source/blender/draw/engines/eevee/eevee_private.h
index 8039fa6e946..dc059e0b084 100644
--- a/source/blender/draw/engines/eevee/eevee_private.h
+++ b/source/blender/draw/engines/eevee/eevee_private.h
@@ -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];
diff --git a/source/blender/draw/engines/eevee/eevee_render.c b/source/blender/draw/engines/eevee/eevee_render.c
index e5b32cf2baa..673532dd304 100644
--- a/source/blender/draw/engines/eevee/eevee_render.c
+++ b/source/blender/draw/engines/eevee/eevee_render.c
@@ -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);



More information about the Bf-blender-cvs mailing list