From 9d20c9ac61511c75da383cb40cfd9461de31a4e4 Mon Sep 17 00:00:00 2001 From: Hirek193 Date: Tue, 10 Nov 2026 17:09:19 +0100 Subject: [PATCH] fixes --- rendering/opengl46/opengl46renderer.cpp | 9 ++++++--- rendering/vulkan14/vulkan14renderer.cpp | 9 ++++++--- simulation/simulationtest.cpp | 2 -- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/rendering/opengl46/opengl46renderer.cpp b/rendering/opengl46/opengl46renderer.cpp index 7ad258ab..4e45137a 100644 --- a/rendering/opengl46/opengl46renderer.cpp +++ b/rendering/opengl46/opengl46renderer.cpp @@ -5608,12 +5608,15 @@ void opengl46_renderer::Update(double const Deltatime) } m_updateaccumulator = 0.0; - m_framerate = 1000.f / ( Timer::subsystem.mainloop_total.average() ); + // the frames actually shown, the wait for fpslimit included (eu07/maszyna#416) + m_framerate = 1000.f / ( Timer::subsystem.mainloop_period.average() ); + // the frames the work alone would allow, so a frame rate held down by fpslimit doesn't cut the draw ranges + auto const workframerate{1000.f / Timer::subsystem.mainloop_total.average()}; // adjust draw ranges etc, based on recent performance if (Global.targetfps != 0.0f) { - float fps_diff = Global.targetfps - m_framerate; + float fps_diff = Global.targetfps - workframerate; if (fps_diff > 0.0f) Global.fDistanceFactor = std::max(0.5f, Global.fDistanceFactor - 0.05f); else @@ -5621,7 +5624,7 @@ void opengl46_renderer::Update(double const Deltatime) } // legacy framerate parameters else if (Global.fFpsAverage != 0.f) { - auto const fps_diff = m_framerate - Global.fFpsAverage; + auto const fps_diff = workframerate - Global.fFpsAverage; if (fps_diff < -Global.fFpsDeviation) { Global.fDistanceFactor = std::min(std::max(1.0f, Global.fDistanceFactor - 0.05f), Global.gfx_distance_factor_max); } diff --git a/rendering/vulkan14/vulkan14renderer.cpp b/rendering/vulkan14/vulkan14renderer.cpp index 0b6b7b1a..417849f5 100644 --- a/rendering/vulkan14/vulkan14renderer.cpp +++ b/rendering/vulkan14/vulkan14renderer.cpp @@ -1107,12 +1107,15 @@ void vulkan14_renderer::Update(double const Deltatime) return; } m_updateaccumulator = 0.0; - m_framerate = 1000.f / Timer::subsystem.mainloop_total.average(); + // the frames actually shown, the wait for fpslimit included (eu07/maszyna#416) + m_framerate = 1000.f / ( Timer::subsystem.mainloop_period.average() ); + // the frames the work alone would allow, so a frame rate held down by fpslimit doesn't cut the draw ranges + auto const workframerate{1000.f / Timer::subsystem.mainloop_total.average()}; // adjust draw ranges etc, based on recent performance (opengl46_renderer::Update()) if (Global.targetfps != 0.0f) { - float fps_diff = Global.targetfps - m_framerate; + float fps_diff = Global.targetfps - workframerate; if (fps_diff > 0.0f) Global.fDistanceFactor = std::max(0.5f, Global.fDistanceFactor - 0.05f); else @@ -1121,7 +1124,7 @@ void vulkan14_renderer::Update(double const Deltatime) // legacy framerate parameters else if (Global.fFpsAverage != 0.f) { - auto const fps_diff = m_framerate - Global.fFpsAverage; + auto const fps_diff = workframerate - Global.fFpsAverage; if (fps_diff < -Global.fFpsDeviation) { Global.fDistanceFactor = std::min(std::max(1.0f, Global.fDistanceFactor - 0.05f), Global.gfx_distance_factor_max); diff --git a/simulation/simulationtest.cpp b/simulation/simulationtest.cpp index 89a8a104..cf3158a4 100644 --- a/simulation/simulationtest.cpp +++ b/simulation/simulationtest.cpp @@ -60,7 +60,6 @@ void apply_test_mode_settings() Global.editor_session = false; Global.local_start_vehicle = "ghostview"; Global.GfxRenderer = "null"; - Global.NvRenderer = false; Global.bSoundEnabled = false; Global.python_enabled = false; Global.bInactivePause = false; @@ -68,7 +67,6 @@ void apply_test_mode_settings() Global.fullscreen_windowed = false; Global.VSync = false; Global.iMultisampling = 0; - Global.gfx_usegles = false; Global.minframetime = std::chrono::duration(0.0f); Global.extra_viewports.clear(); Global.headtrack_conf.joy.clear();