From d7b95f45c22bdcb09b9c4f7ee3561a4da7d10d86 Mon Sep 17 00:00:00 2001 From: "Matias N. Goldberg" Date: Sun, 10 Mar 2024 15:52:35 -0300 Subject: [PATCH] [GL] Planar Reflections had inverted Y if rendered to a RenderTexture Thanks Crystal Hammer for the repro! --- Components/PlanarReflections/src/OgrePlanarReflections.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Components/PlanarReflections/src/OgrePlanarReflections.cpp b/Components/PlanarReflections/src/OgrePlanarReflections.cpp index 1f06c4b0f88..1f256a381bc 100644 --- a/Components/PlanarReflections/src/OgrePlanarReflections.cpp +++ b/Components/PlanarReflections/src/OgrePlanarReflections.cpp @@ -887,8 +887,11 @@ namespace Ogre memset( passBufferPtr, 0, (mMaxActiveActors - mActiveActors.size()) * 4u * sizeof(float) ); passBufferPtr += (mMaxActiveActors - mActiveActors.size()) * 4u; - Matrix4 reflProjMat = PROJECTIONCLIPSPACE2DTOIMAGESPACE_PERSPECTIVE * projectionMatrix; - for( size_t i=0; i<16; ++i ) + // We call getProjectionMatrixWithRSDepth directly because + // it must NOT account for requiresTextureFlipping. + Matrix4 reflProjMat = + PROJECTIONCLIPSPACE2DTOIMAGESPACE_PERSPECTIVE * camera->getProjectionMatrixWithRSDepth(); + for( size_t i = 0; i < 16; ++i ) *passBufferPtr++ = (float)reflProjMat[0][i]; *passBufferPtr++ = static_cast( mInvMaxDistance );