diff --git a/src/c_bind.cpp b/src/c_bind.cpp index 83e5e1820c7..cbc65868f5f 100644 --- a/src/c_bind.cpp +++ b/src/c_bind.cpp @@ -744,8 +744,8 @@ bool C_DoKey (event_t *ev, FKeyBindings *binds, FKeyBindings *doublebinds) dclick = false; // This used level.time which didn't work outside a level. - nowtime = I_MSTime(); - if (doublebinds != NULL && DClickTime[ev->data1] > nowtime && ev->type == EV_KeyDown) + nowtime = I_FPSTime(); + if (doublebinds != NULL && int(DClickTime[ev->data1] - nowtime) > 0 && ev->type == EV_KeyDown) { // Key pressed for a double click binding = doublebinds->GetBinding(ev->data1); diff --git a/src/d_main.cpp b/src/d_main.cpp index 5e0eff1d130..e58c2f68618 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -779,9 +779,9 @@ void D_Display () { - unsigned int nowtime = I_FPSTime(); - TexMan.UpdateAnimations(nowtime); - R_UpdateSky(nowtime); + screen->FrameTime = I_FPSTime(); + TexMan.UpdateAnimations(screen->FrameTime); + R_UpdateSky(screen->FrameTime); switch (gamestate) { case GS_FULLCONSOLE: @@ -808,7 +808,7 @@ void D_Display () // [ZZ] execute event hook that we just started the frame //E_RenderFrame(); // - Renderer->RenderView(&players[consoleplayer], nowtime); + Renderer->RenderView(&players[consoleplayer]); if ((hw2d = screen->Begin2D(viewactive))) { diff --git a/src/d_net.cpp b/src/d_net.cpp index 12de17c9e4a..95765e84cbc 100644 --- a/src/d_net.cpp +++ b/src/d_net.cpp @@ -783,7 +783,7 @@ void GetPackets (void) // [RH] Get "ping" times - totally useless, since it's bound to the frequency // packets go out at. lastrecvtime[netconsole] = currrecvtime[netconsole]; - currrecvtime[netconsole] = I_MSTime (); + currrecvtime[netconsole] = I_FPSTime (); // check for exiting the game if (netbuffer[0] & NCMD_EXIT) diff --git a/src/gl/data/gl_data.cpp b/src/gl/data/gl_data.cpp index 9a7c2e0379f..42fc6e96d6f 100644 --- a/src/gl/data/gl_data.cpp +++ b/src/gl/data/gl_data.cpp @@ -55,7 +55,6 @@ #include "gl/gl_functions.h" GLRenderSettings glset; -long gl_frameMS; EXTERN_CVAR(Int, gl_lightmode) EXTERN_CVAR(Bool, gl_brightfog) diff --git a/src/gl/data/gl_data.h b/src/gl/data/gl_data.h index a46680ab77f..518f330c902 100644 --- a/src/gl/data/gl_data.h +++ b/src/gl/data/gl_data.h @@ -65,6 +65,4 @@ void gl_InitPortals(); void gl_BuildPortalCoverage(FPortalCoverage *coverage, subsector_t *subsector, const DVector2 &displacement); void gl_InitData(); -extern long gl_frameMS; - #endif diff --git a/src/gl/models/gl_models.cpp b/src/gl/models/gl_models.cpp index 6ef0acbfc47..541a4c36c11 100644 --- a/src/gl/models/gl_models.cpp +++ b/src/gl/models/gl_models.cpp @@ -55,7 +55,7 @@ static inline float GetTimeFloat() { - return (float)gl_frameMS * (float)TICRATE / 1000.0f; + return (float)screen->FrameTime * (float)TICRATE / 1000.0f; } CVAR(Bool, gl_interpolate_model_frames, true, CVAR_ARCHIVE) diff --git a/src/gl/renderer/gl_renderer.h b/src/gl/renderer/gl_renderer.h index f8d710467ed..e3924ad4086 100644 --- a/src/gl/renderer/gl_renderer.h +++ b/src/gl/renderer/gl_renderer.h @@ -171,7 +171,7 @@ class FGLRenderer unsigned char *GetTextureBuffer(FTexture *tex, int &w, int &h); void SetupLevel(); - void RenderView(player_t* player, unsigned int nowtime); + void RenderView(player_t* player); void RenderScreenQuad(); void PostProcessScene(int fixedcm); diff --git a/src/gl/renderer/gl_renderstate.cpp b/src/gl/renderer/gl_renderstate.cpp index 67c9c21faf1..1427e235010 100644 --- a/src/gl/renderer/gl_renderstate.cpp +++ b/src/gl/renderer/gl_renderstate.cpp @@ -161,7 +161,7 @@ bool FRenderState::ApplyShader() activeShader->muInterpolationFactor.Set(mInterpolationFactor); activeShader->muClipHeight.Set(mClipHeight); activeShader->muClipHeightDirection.Set(mClipHeightDirection); - activeShader->muTimer.Set(gl_frameMS * mShaderTimer / 1000.f); + activeShader->muTimer.Set(screen->FrameTime * mShaderTimer / 1000.f); activeShader->muAlphaThreshold.Set(mAlphaThreshold); activeShader->muLightIndex.Set(mLightIndex); // will always be -1 for now activeShader->muClipSplit.Set(mClipSplit); diff --git a/src/gl/scene/gl_scene.cpp b/src/gl/scene/gl_scene.cpp index 0f80dae6668..c1351001d17 100644 --- a/src/gl/scene/gl_scene.cpp +++ b/src/gl/scene/gl_scene.cpp @@ -785,7 +785,7 @@ sector_t * GLSceneDrawer::RenderViewpoint (AActor * camera, GL_IRECT * bounds, f GLRenderer->mSceneClearColor[0] = 0.0f; GLRenderer->mSceneClearColor[1] = 0.0f; GLRenderer->mSceneClearColor[2] = 0.0f; - R_SetupFrame (r_viewpoint, r_viewwindow, camera, gl_frameMS); + R_SetupFrame (r_viewpoint, r_viewwindow, camera); SetViewArea(); GLRenderer->mGlobVis = R_GetGlobVis(r_viewwindow, r_visibility); @@ -800,8 +800,8 @@ sector_t * GLSceneDrawer::RenderViewpoint (AActor * camera, GL_IRECT * bounds, f GLRenderer->mAngles.Roll.Degrees = r_viewpoint.Angles.Roll.Degrees; // Scroll the sky - GLRenderer->mSky1Pos = (float)fmod(gl_frameMS * level.skyspeed1, 1024.f) * 90.f/256.f; - GLRenderer->mSky2Pos = (float)fmod(gl_frameMS * level.skyspeed2, 1024.f) * 90.f/256.f; + GLRenderer->mSky1Pos = (float)fmod(screen->FrameTime * level.skyspeed1, 1024.f) * 90.f/256.f; + GLRenderer->mSky2Pos = (float)fmod(screen->FrameTime * level.skyspeed2, 1024.f) * 90.f/256.f; @@ -878,7 +878,7 @@ sector_t * GLSceneDrawer::RenderViewpoint (AActor * camera, GL_IRECT * bounds, f // //----------------------------------------------------------------------------- -void FGLRenderer::RenderView (player_t* player, unsigned int nowtime) +void FGLRenderer::RenderView (player_t* player) { checkBenchActive(); @@ -891,7 +891,6 @@ void FGLRenderer::RenderView (player_t* player, unsigned int nowtime) // Get this before everything else if (cl_capfps || r_NoInterpolate) r_viewpoint.TicFrac = 1.; else r_viewpoint.TicFrac = I_GetTimeFrac (&r_viewpoint.FrameTime); - gl_frameMS = nowtime; P_FindParticleSubsectors (); @@ -984,7 +983,7 @@ void GLSceneDrawer::WriteSavePic (player_t *player, FileWriter *file, int width, struct FGLInterface : public FRenderer { void Precache(uint8_t *texhitlist, TMap &actorhitlist) override; - void RenderView(player_t *player, unsigned int nowtime) override; + void RenderView(player_t *player) override; void WriteSavePic (player_t *player, FileWriter *file, int width, int height) override; void StartSerialize(FSerializer &arc) override; void EndSerialize(FSerializer &arc) override; @@ -1075,9 +1074,9 @@ void FGLInterface::WriteSavePic (player_t *player, FileWriter *file, int width, // //=========================================================================== -void FGLInterface::RenderView(player_t *player, unsigned int nowtime) +void FGLInterface::RenderView(player_t *player) { - GLRenderer->RenderView(player, nowtime); + GLRenderer->RenderView(player); } //=========================================================================== diff --git a/src/gl/scene/gl_scenedrawer.h b/src/gl/scene/gl_scenedrawer.h index 6e4fa143dbe..9209e6dad96 100644 --- a/src/gl/scene/gl_scenedrawer.h +++ b/src/gl/scene/gl_scenedrawer.h @@ -60,7 +60,7 @@ class GLSceneDrawer void CheckViewArea(vertex_t *v1, vertex_t *v2, sector_t *frontsector, sector_t *backsector); sector_t *RenderViewpoint(AActor * camera, GL_IRECT * bounds, float fov, float ratio, float fovratio, bool mainview, bool toscreen); - void RenderView(player_t *player, unsigned int nowtime); + void RenderView(player_t *player); void WriteSavePic(player_t *player, FileWriter *file, int width, int height); void DrawPSprite(player_t * player, DPSprite *psp, float sx, float sy, bool hudModelStep, int OverrideShader, bool alphatexture); diff --git a/src/gl/system/gl_framebuffer.h b/src/gl/system/gl_framebuffer.h index 7d11db921ae..1d85562b352 100644 --- a/src/gl/system/gl_framebuffer.h +++ b/src/gl/system/gl_framebuffer.h @@ -12,7 +12,6 @@ class FHardwareTexture; class FSimpleVertexBuffer; class FGLDebug; -extern long gl_frameMS; #ifdef _WIN32 class OpenGLFrameBuffer : public Win32GLFrameBuffer { diff --git a/src/polyrenderer/poly_renderer.cpp b/src/polyrenderer/poly_renderer.cpp index 7fe9062b08c..c3389bba596 100644 --- a/src/polyrenderer/poly_renderer.cpp +++ b/src/polyrenderer/poly_renderer.cpp @@ -115,7 +115,7 @@ void PolyRenderer::RenderActorView(AActor *actor, bool dontmaplines) DontMapLines = dontmaplines; - R_SetupFrame(Viewpoint, Viewwindow, actor, swrenderer::renderTime); + R_SetupFrame(Viewpoint, Viewwindow, actor); P_FindParticleSubsectors(); PO_LinkToSubsectors(); diff --git a/src/posix/cocoa/st_console.mm b/src/posix/cocoa/st_console.mm index 216e795bd1b..bf08c27eb4b 100644 --- a/src/posix/cocoa/st_console.mm +++ b/src/posix/cocoa/st_console.mm @@ -200,7 +200,7 @@ { explicit TimedUpdater(const Function& function) { - const unsigned int currentTime = I_MSTime(); + const unsigned int currentTime = I_FPSTime(); if (currentTime - m_previousTime > interval) { diff --git a/src/r_renderer.h b/src/r_renderer.h index 0165c33b8a6..54952bc29d1 100644 --- a/src/r_renderer.h +++ b/src/r_renderer.h @@ -29,7 +29,7 @@ struct FRenderer virtual void Precache(uint8_t *texhitlist, TMap &actorhitlist) = 0; // render 3D view - virtual void RenderView(player_t *player, unsigned int nowtime) = 0; + virtual void RenderView(player_t *player) = 0; // Remap voxel palette virtual void RemapVoxels() {} diff --git a/src/r_utility.cpp b/src/r_utility.cpp index 70619d832a2..77e747007ea 100644 --- a/src/r_utility.cpp +++ b/src/r_utility.cpp @@ -751,7 +751,7 @@ static double QuakePower(double factor, double intensity, double offset) // //========================================================================== -void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor *actor, unsigned int renderTime) +void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor *actor) { if (actor == NULL) { @@ -982,7 +982,7 @@ void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor if (hom == 3) { - hom = ((renderTime / 128) & 1) + 1; + hom = ((screen->FrameTime / 128) & 1) + 1; } if (hom == 1) { @@ -994,7 +994,7 @@ void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor } else if (hom == 4) { - color = (renderTime / 32) & 255; + color = (screen->FrameTime / 32) & 255; } else { diff --git a/src/r_utility.h b/src/r_utility.h index 0254a114ec3..eb108e411a4 100644 --- a/src/r_utility.h +++ b/src/r_utility.h @@ -111,7 +111,7 @@ void R_ClearInterpolationPath(); void R_AddInterpolationPoint(const DVector3a &vec); void R_SetViewSize (int blocks); void R_SetFOV (FRenderViewpoint &viewpoint, DAngle fov); -void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor * camera, unsigned int renderTime); +void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor * camera); void R_SetViewAngle (FRenderViewpoint &viewpoint, const FViewWindow &viewwindow); // Called by startup code. diff --git a/src/swrenderer/drawers/r_draw.cpp b/src/swrenderer/drawers/r_draw.cpp index e487462114c..c894e46ce16 100644 --- a/src/swrenderer/drawers/r_draw.cpp +++ b/src/swrenderer/drawers/r_draw.cpp @@ -64,7 +64,6 @@ namespace swrenderer int fuzzoffset[FUZZTABLE + 1]; int fuzzpos; int fuzzviewheight; - unsigned int renderTime; int fuzz_random_x_offset[FUZZ_RANDOM_X_SIZE] = { diff --git a/src/swrenderer/drawers/r_draw.h b/src/swrenderer/drawers/r_draw.h index 4a31da74bda..4672a4fd315 100644 --- a/src/swrenderer/drawers/r_draw.h +++ b/src/swrenderer/drawers/r_draw.h @@ -35,7 +35,6 @@ namespace swrenderer extern FDynamicColormap ShadeFakeColormap[16]; extern uint8_t identitymap[256]; extern FDynamicColormap identitycolormap; - extern unsigned int renderTime; // Constant arrays used for psprite clipping and initializing clipping. extern short zeroarray[MAXWIDTH]; diff --git a/src/swrenderer/r_swrenderer.cpp b/src/swrenderer/r_swrenderer.cpp index 69f5b2f433c..19bf055a637 100644 --- a/src/swrenderer/r_swrenderer.cpp +++ b/src/swrenderer/r_swrenderer.cpp @@ -170,9 +170,8 @@ void FSoftwareRenderer::Precache(uint8_t *texhitlist, TMap & } } -void FSoftwareRenderer::RenderView(player_t *player, unsigned int nowtime) +void FSoftwareRenderer::RenderView(player_t *player) { - renderTime = nowtime; if (r_polyrenderer) { PolyRenderer::Instance()->Viewpoint = r_viewpoint; diff --git a/src/swrenderer/r_swrenderer.h b/src/swrenderer/r_swrenderer.h index 05d00ecec04..19f75758f50 100644 --- a/src/swrenderer/r_swrenderer.h +++ b/src/swrenderer/r_swrenderer.h @@ -13,7 +13,7 @@ struct FSoftwareRenderer : public FRenderer void Precache(uint8_t *texhitlist, TMap &actorhitlist) override; // render 3D view - void RenderView(player_t *player, unsigned int nowtime) override; + void RenderView(player_t *player) override; // Remap voxel palette void RemapVoxels() override; diff --git a/src/swrenderer/scene/r_scene.cpp b/src/swrenderer/scene/r_scene.cpp index c2c63556e44..4667f25ebf1 100644 --- a/src/swrenderer/scene/r_scene.cpp +++ b/src/swrenderer/scene/r_scene.cpp @@ -136,7 +136,7 @@ namespace swrenderer MaskedCycles.Reset(); DrawerWaitCycles.Reset(); - R_SetupFrame(MainThread()->Viewport->viewpoint, MainThread()->Viewport->viewwindow, actor, renderTime); + R_SetupFrame(MainThread()->Viewport->viewpoint, MainThread()->Viewport->viewwindow, actor); if (APART(R_OldBlend)) NormalLight.Maps = realcolormaps.Maps; else NormalLight.Maps = realcolormaps.Maps + NUMCOLORMAPS * 256 * R_OldBlend; diff --git a/src/swrenderer/things/r_voxel.cpp b/src/swrenderer/things/r_voxel.cpp index beb7a474b88..75b0a2c0778 100644 --- a/src/swrenderer/things/r_voxel.cpp +++ b/src/swrenderer/things/r_voxel.cpp @@ -135,7 +135,7 @@ namespace swrenderer int voxelspin = (thing->flags & MF_DROPPED) ? voxel->DroppedSpin : voxel->PlacedSpin; if (voxelspin != 0) { - DAngle ang = double(renderTime) * voxelspin / 1000; + DAngle ang = double(screen->FrameTime) * voxelspin / 1000; vis->Angle -= ang; } diff --git a/src/v_video.cpp b/src/v_video.cpp index d47ece2015d..5f774a648e2 100644 --- a/src/v_video.cpp +++ b/src/v_video.cpp @@ -870,7 +870,7 @@ void DFrameBuffer::DrawRateStuff () // Draws frame time and cumulative fps if (vid_fps) { - uint32_t ms = I_FPSTime(); + uint32_t ms = screen->FrameTime; uint32_t howlong = ms - LastMS; if ((signed)howlong >= 0) { diff --git a/src/v_video.h b/src/v_video.h index fc4d3924ddc..5934a3706a5 100644 --- a/src/v_video.h +++ b/src/v_video.h @@ -453,6 +453,7 @@ class DFrameBuffer : public DSimpleCanvas // The original size of the framebuffer as selected in the video menu. int VideoWidth = 0; int VideoHeight = 0; + uint32_t FrameTime = 0; protected: void DrawRateStuff ();