From b26164ded5e9804f233dc72407080939c960f9a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Thu, 4 Apr 2019 18:08:42 +0200 Subject: Fix T63108 Eevee: Wrong Reflection plane matrix if camera view is not centered Invert X axis of the Window Matrix (AKA Projection matrix) instead of the View matrix. --- source/blender/draw/engines/eevee/eevee_lightprobes.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'source/blender/draw/engines/eevee/eevee_lightprobes.c') diff --git a/source/blender/draw/engines/eevee/eevee_lightprobes.c b/source/blender/draw/engines/eevee/eevee_lightprobes.c index 90a3691f6e5..5d4601df7cf 100644 --- a/source/blender/draw/engines/eevee/eevee_lightprobes.c +++ b/source/blender/draw/engines/eevee/eevee_lightprobes.c @@ -666,16 +666,17 @@ static void lightbake_planar_compute_render_matrices( EEVEE_PlanarReflection *eplanar, DRWMatrixState *r_matstate, const float viewmat[4][4], const float winmat[4][4]) { + /* Temporal sampling jitter should be already applied to the DRW_MAT_WIN. */ + copy_m4_m4(r_matstate->winmat, winmat); + /* Invert X to avoid flipping the triangle facing direction. */ + r_matstate->winmat[0][0] = -r_matstate->winmat[0][0]; + r_matstate->winmat[1][0] = -r_matstate->winmat[1][0]; + r_matstate->winmat[2][0] = -r_matstate->winmat[2][0]; + r_matstate->winmat[3][0] = -r_matstate->winmat[3][0]; /* Reflect Camera Matrix. */ mul_m4_m4m4(r_matstate->viewmat, viewmat, eplanar->mtx); - /* Invert X to avoid flipping the triangle facing direction. */ - r_matstate->viewmat[0][0] = -r_matstate->viewmat[0][0]; - r_matstate->viewmat[1][0] = -r_matstate->viewmat[1][0]; - r_matstate->viewmat[2][0] = -r_matstate->viewmat[2][0]; - r_matstate->viewmat[3][0] = -r_matstate->viewmat[3][0]; /* Apply Projection Matrix. */ - /* Temporal sampling jitter should be already applied to the DRW_MAT_WIN. */ - mul_m4_m4m4(r_matstate->persmat, winmat, r_matstate->viewmat); + mul_m4_m4m4(r_matstate->persmat, r_matstate->winmat, r_matstate->viewmat); } static void eevee_lightprobes_extract_from_cache(EEVEE_LightProbesInfo *pinfo, LightCache *lcache) -- cgit v1.2.3