From b23ad8adf08efb2e49c71dc63657513152c41029 Mon Sep 17 00:00:00 2001 From: Sonic Dreamcaster Date: Sat, 29 Mar 2025 16:20:19 -0300 Subject: [PATCH] revert whatever happened here --- src/port/Engine.cpp | 21 +++++++++++--------- src/port/ui/ImguiUI.cpp | 44 +++++++++++++++++++++++++++++++---------- 2 files changed, 46 insertions(+), 19 deletions(-) diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp index f85e2729..e0307752 100644 --- a/src/port/Engine.cpp +++ b/src/port/Engine.cpp @@ -480,7 +480,7 @@ void GameEngine::ProcessGfxCommands(Gfx* commands) { wnd->SetRendererUCode(UcodeHandlers::ucode_f3dex); std::vector> mtx_replacements; - int target_fps = GameEngine::Instance->GetInterpolationFPS(); + int target_fps = CVarGetInteger("gInterpolationFPS", 60); static int last_fps; static int last_update_rate; static int time; @@ -509,8 +509,11 @@ void GameEngine::ProcessGfxCommands(Gfx* commands) { time -= fps; + int threshold = CVarGetInteger("gExtraLatencyThreshold", 80); + if (wnd != nullptr) { wnd->SetTargetFps(fps); + wnd->SetMaximumFrameLatency(threshold > 0 && target_fps >= threshold ? 2 : 1); } // When the gfx debugger is active, only run with the final mtx @@ -526,16 +529,16 @@ void GameEngine::ProcessGfxCommands(Gfx* commands) { } uint32_t GameEngine::GetInterpolationFPS() { - if (CVarGetInteger("gMatchRefreshRate", 0)) { - return Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate(); - - } else if (CVarGetInteger("gVsyncEnabled", 1) || - !Ship::Context::GetInstance()->GetWindow()->CanDisableVerticalSync()) { - return std::min(Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate(), - CVarGetInteger("gInterpolationFPS", 60)); + if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) { + return CVarGetInteger("gInterpolationFPS", 60); } - return CVarGetInteger("gInterpolationFPS", 60); + if (CVarGetInteger("gMatchRefreshRate", 0)) { + return Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate(); + } + + return std::min(Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate(), + CVarGetInteger("gInterpolationFPS", 60)); } uint32_t GameEngine::GetInterpolationFrameCount() diff --git a/src/port/ui/ImguiUI.cpp b/src/port/ui/ImguiUI.cpp index 4e13f3f3..996d2bbb 100644 --- a/src/port/ui/ImguiUI.cpp +++ b/src/port/ui/ImguiUI.cpp @@ -246,7 +246,12 @@ void DrawSettingsMenu(){ { // FPS Slider const int minFps = 30; - static int maxFps = 360; + static int maxFps; + if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) { + maxFps = 360; + } else { + maxFps = Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate(); + } int currentFps = 0; #ifdef __WIIU__ UIWidgets::Spacer(0); @@ -309,20 +314,40 @@ void DrawSettingsMenu(){ CVarSetInteger("gInterpolationFPS", currentFps); Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); #else - bool matchingRefreshRate = CVarGetInteger("gMatchRefreshRate", 0); + bool matchingRefreshRate = + CVarGetInteger("gMatchRefreshRate", 0) && Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() != Ship::WindowBackend::FAST3D_DXGI_DX11; UIWidgets::CVarSliderInt((currentFps == 30) ? "FPS: Original (30)" : "FPS: %d", "gInterpolationFPS", minFps, maxFps, 60, { .disabled = matchingRefreshRate }); #endif - UIWidgets::Tooltip( - "Uses Matrix Interpolation to create extra frames, resulting in smoother graphics. This is purely " - "visual and does not impact game logic, execution of glitches etc.\n\n" - "A higher target FPS than your monitor's refresh rate will waste resources, and might give a worse result." - ); + if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) { + UIWidgets::Tooltip( + "Uses Matrix Interpolation to create extra frames, resulting in smoother graphics. This is purely " + "visual and does not impact game logic, execution of glitches etc.\n\n" + "A higher target FPS than your monitor's refresh rate will waste resources, and might give a worse result." + ); + } else { + UIWidgets::Tooltip( + "Uses Matrix Interpolation to create extra frames, resulting in smoother graphics. This is purely " + "visual and does not impact game logic, execution of glitches etc." + ); + } } // END FPS Slider - UIWidgets::PaddedEnhancementCheckbox("Match Refresh Rate", "gMatchRefreshRate", true, false); - UIWidgets::Tooltip("Matches interpolation value to the refresh rate of your display."); + if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) { + UIWidgets::Spacer(0); + if (ImGui::Button("Match Refresh Rate")) { + int hz = Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate(); + if (hz >= 30 && hz <= 360) { + CVarSetInteger("gInterpolationFPS", hz); + Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); + } + } + } else { + UIWidgets::PaddedEnhancementCheckbox("Match Refresh Rate", "gMatchRefreshRate", true, false); + } + + UIWidgets::Tooltip("Matches interpolation value to the current game's window refresh rate"); if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) { UIWidgets::PaddedEnhancementSliderInt(CVarGetInteger("gExtraLatencyThreshold", 0) == 0 ? "Jitter fix: Off" : "Jitter fix: >= %d FPS", @@ -369,7 +394,6 @@ void DrawSettingsMenu(){ if (Ship::Context::GetInstance()->GetWindow()->CanDisableVerticalSync()) { UIWidgets::PaddedEnhancementCheckbox("Enable Vsync", "gVsyncEnabled", true, false); - UIWidgets::Tooltip("Removes tearing, but clamps your max FPS to your displays refresh rate."); } if (Ship::Context::GetInstance()->GetWindow()->SupportsWindowedFullscreen()) {