[Bf-blender-cvs] [be04746ad72] temp-drawcontext: Eevee: Fix SSR in multiviewport.

Clément Foucault noreply at git.blender.org
Tue Feb 20 22:46:05 CET 2018


Commit: be04746ad72c2d7687bb3a1c50c3ff04cfbf6191
Author: Clément Foucault
Date:   Tue Feb 20 15:18:56 2018 +0100
Branches: temp-drawcontext
https://developer.blender.org/rBbe04746ad72c2d7687bb3a1c50c3ff04cfbf6191

Eevee: Fix SSR in multiviewport.

This was due to the prev_persmat being recorded per viewlayers instead of per viewport.

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

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

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

diff --git a/source/blender/draw/engines/eevee/eevee_effects.c b/source/blender/draw/engines/eevee/eevee_effects.c
index be39e06bac9..1e1c8f357a1 100644
--- a/source/blender/draw/engines/eevee/eevee_effects.c
+++ b/source/blender/draw/engines/eevee/eevee_effects.c
@@ -214,6 +214,9 @@ void EEVEE_effects_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata, Object
 		DRW_TEXTURE_FREE_SAFE(txl->color_double_buffer);
 		DRW_FRAMEBUFFER_FREE_SAFE(fbl->double_buffer);
 	}
+
+	/* Copy previous persmat to UBO data */
+	copy_m4_m4(common_data->prev_persmat, stl->effects->prev_persmat);
 }
 
 void EEVEE_effects_cache_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
@@ -406,7 +409,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;
@@ -449,7 +452,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_private.h b/source/blender/draw/engines/eevee/eevee_private.h
index 6159126d71e..62b6ce28b84 100644
--- a/source/blender/draw/engines/eevee/eevee_private.h
+++ b/source/blender/draw/engines/eevee/eevee_private.h
@@ -512,6 +512,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];



More information about the Bf-blender-cvs mailing list