From b74c88f4f1540bbbb67aafa7c10d9364503d4fbe Mon Sep 17 00:00:00 2001 From: cdozdil Date: Thu, 30 Apr 2026 00:26:40 +0300 Subject: [PATCH] Added base FPS to the FPS overlay when using FG --- OptiScaler/menu/menu_common.cpp | 52 ++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/OptiScaler/menu/menu_common.cpp b/OptiScaler/menu/menu_common.cpp index a6fe7784..51773975 100644 --- a/OptiScaler/menu/menu_common.cpp +++ b/OptiScaler/menu/menu_common.cpp @@ -2145,38 +2145,88 @@ bool MenuCommon::RenderMenu() // Prepare Line 1 if (config->FpsOverlayType.value_or_default() == FpsOverlay_JustFPS) { + if (fg != nullptr && fg->IsActive() && !fg->IsPaused()) + { + firstLine = StrFmt("%s | FPS: %6.1f/%5.1f %s", api.c_str(), frameRate, + frameRate / (float) (fg->GetInterpolatedFrameCount() + 1), fgText.c_str()); + } + else + { firstLine = StrFmt("%s | FPS: %6.1f %s", api.c_str(), frameRate, fgText.c_str()); } + } else if (config->FpsOverlayType.value_or_default() == FpsOverlay_Simple) { if (currentFeature != nullptr && !currentFeature->IsFrozen()) { + if (fg != nullptr && fg->IsActive() && !fg->IsPaused()) + { + firstLine = StrFmt("%s | FPS: %6.1f/%5.1f, %7.2f ms %s | %s -> %s %u.%u.%u", api.c_str(), + frameRate, frameRate / (float) (fg->GetInterpolatedFrameCount() + 1), + frameTime, fgText.c_str(), state.currentInputApiName.c_str(), + currentFeature->Name().c_str(), currentFeature->Version().major, + currentFeature->Version().minor, currentFeature->Version().patch); + } + else + { firstLine = StrFmt("%s | FPS: %6.1f, %7.2f ms %s | %s -> %s %u.%u.%u", api.c_str(), frameRate, frameTime, fgText.c_str(), state.currentInputApiName.c_str(), currentFeature->Name().c_str(), currentFeature->Version().major, currentFeature->Version().minor, currentFeature->Version().patch); } + } + else + { + if (fg != nullptr && fg->IsActive() && !fg->IsPaused()) + { + firstLine = StrFmt("%s | FPS: %6.1f/%5.1f, %7.2f ms %s", api.c_str(), frameRate, + frameRate / (float) (fg->GetInterpolatedFrameCount() + 1), frameTime, + fgText.c_str()); + } else { firstLine = StrFmt("%s | FPS: %6.1f, %7.2f ms %s", api.c_str(), frameRate, frameTime, fgText.c_str()); } } + } else { if (currentFeature != nullptr && !currentFeature->IsFrozen()) { - firstLine = StrFmt("%s | FPS: %6.1f, Avg: %6.1f %s | %s -> %s %u.%u.%u", api.c_str(), frameRate, + if (fg != nullptr && fg->IsActive() && !fg->IsPaused()) + { + firstLine = + StrFmt("%s | FPS: %6.1f/%5.1f, Avg: %6.1f %s | %s -> %s %u.%u.%u", api.c_str(), frameRate, + frameRate / (float) (fg->GetInterpolatedFrameCount() + 1), + 1000.0f / averageFrameTime, fgText.c_str(), state.currentInputApiName.c_str(), + currentFeature->Name().c_str(), currentFeature->Version().major, + currentFeature->Version().minor, currentFeature->Version().patch); + } + else + { + firstLine = + StrFmt("%s | FPS: %6.1f, Avg: %6.1f %s | %s -> %s %u.%u.%u", api.c_str(), frameRate, 1000.0f / averageFrameTime, fgText.c_str(), state.currentInputApiName.c_str(), currentFeature->Name().c_str(), currentFeature->Version().major, currentFeature->Version().minor, currentFeature->Version().patch); } + } else { + if (fg != nullptr && fg->IsActive() && !fg->IsPaused()) + { + firstLine = StrFmt("%s | FPS: %6.1f/%5.1f, Avg: %6.1f %s", api.c_str(), frameRate, + frameRate / (float) (fg->GetInterpolatedFrameCount() + 1), + 1000.0f / averageFrameTime, fgText.c_str()); + } + else + { firstLine = StrFmt("%s | FPS: %6.1f, Avg: %6.1f %s", api.c_str(), frameRate, 1000.0f / averageFrameTime, fgText.c_str()); } } + } // Prepare Line 2 if (config->FpsOverlayType.value_or_default() >= FpsOverlay_Detailed)