From d2bc24737b49f01a668dbaea79c88ee7cc8c495a Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Tue, 14 Nov 2017 22:46:28 -0500 Subject: [PATCH] - put in timer resets for the shader system, so that they can continue being passed as floats --- src/gl/renderer/gl_renderstate.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gl/renderer/gl_renderstate.cpp b/src/gl/renderer/gl_renderstate.cpp index 5385e4ae3..609e80005 100644 --- a/src/gl/renderer/gl_renderstate.cpp +++ b/src/gl/renderer/gl_renderstate.cpp @@ -118,8 +118,10 @@ void FRenderState::Reset() bool FRenderState::ApplyShader() { - static int firstFrame = 0; - if (firstFrame == 0) + static uint64_t firstFrame = 0; + // if firstFrame is not yet initialized, initialize it to current time + // if we're going to overflow a float (after ~4.6 hours, or 24 bits), re-init to regain precision + if ((firstFrame == 0) || (screen->FrameTime - firstFrame >= 1<<24)) firstFrame = screen->FrameTime; static const float nulvec[] = { 0.f, 0.f, 0.f, 0.f };