[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