From 0c866655f8a5e8df2641deaf0df76f77fcd8f4aa Mon Sep 17 00:00:00 2001 From: Robert Beckebans Date: Wed, 20 Apr 2022 12:05:47 +0200 Subject: [PATCH] Don't render motion vectors if standing still --- neo/renderer/RenderBackend.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/neo/renderer/RenderBackend.cpp b/neo/renderer/RenderBackend.cpp index 756d3a15..b578e933 100644 --- a/neo/renderer/RenderBackend.cpp +++ b/neo/renderer/RenderBackend.cpp @@ -5528,11 +5528,18 @@ void idRenderBackend::DrawMotionVectors() int mvpIndex = ( viewDef->renderView.viewEyeBuffer == 1 ) ? 1 : 0; // derive the matrix to go from current pixels to previous frame pixels - idRenderMatrix inverseMVP; - idRenderMatrix::Inverse( viewDef->worldSpace.unjitteredMVP, inverseMVP ); - + bool cameraMoved = false; idRenderMatrix motionMatrix; - idRenderMatrix::Multiply( prevMVP[mvpIndex], inverseMVP, motionMatrix ); + + if( memcmp( &viewDef->worldSpace.unjitteredMVP[0][0], &prevMVP[mvpIndex][0][0], sizeof( idRenderMatrix ) ) != 0 ) + { + idRenderMatrix inverseMVP; + idRenderMatrix::Inverse( viewDef->worldSpace.unjitteredMVP, inverseMVP ); + + idRenderMatrix::Multiply( prevMVP[mvpIndex], inverseMVP, motionMatrix ); + + cameraMoved = true; + } prevMVP[mvpIndex] = viewDef->worldSpace.unjitteredMVP; @@ -5550,7 +5557,7 @@ void idRenderBackend::DrawMotionVectors() windowCoordParm[3] = h; SetFragmentParm( RENDERPARM_WINDOWCOORD, windowCoordParm ); // rpWindowCoord - if( r_taaMotionVectors.GetBool() && prevViewsValid ) + if( r_taaMotionVectors.GetBool() && prevViewsValid && cameraMoved ) { RB_SetMVP( motionMatrix );