mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-22 17:32:19 -05:00
[Interpolation] Allow Matching & Limit Max FPS (#2466)
This commit is contained in:
parent
7551fba3d2
commit
b13f6f4b70
@ -890,15 +890,10 @@ namespace GameMenuBar {
|
||||
|
||||
const char* fps_cvar = "gInterpolationFPS";
|
||||
{
|
||||
#if defined(__SWITCH__) || defined(__WIIU__)
|
||||
int minFps = 20;
|
||||
int maxFps = 60;
|
||||
#else
|
||||
int minFps = 20;
|
||||
int maxFps = 360;
|
||||
#endif
|
||||
int maxFps = Ship::Window::GetInstance()->GetCurrentRefreshRate();
|
||||
|
||||
int val = CVarGetInteger(fps_cvar, minFps);
|
||||
int val = OTRGlobals::Instance->GetInterpolationFPS();
|
||||
val = fmax(fmin(val, maxFps), 20);
|
||||
|
||||
#ifdef __WIIU__
|
||||
@ -917,6 +912,11 @@ namespace GameMenuBar {
|
||||
ImGui::Text("Frame interpolation: %d FPS", fps);
|
||||
}
|
||||
|
||||
if (CVarGetInteger("gMatchRefreshRate", 0)) {
|
||||
ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true);
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
|
||||
}
|
||||
|
||||
std::string MinusBTNFPSI = " - ##FPSInterpolation";
|
||||
std::string PlusBTNFPSI = " + ##FPSInterpolation";
|
||||
if (ImGui::Button(MinusBTNFPSI.c_str())) {
|
||||
@ -976,24 +976,18 @@ namespace GameMenuBar {
|
||||
CVarSetInteger(fps_cvar, val);
|
||||
SohImGui::RequestCvarSaveOnNextTick();
|
||||
}
|
||||
|
||||
if (CVarGetInteger("gMatchRefreshRate", 0)) {
|
||||
ImGui::PopItemFlag();
|
||||
ImGui::PopStyleVar(1);
|
||||
}
|
||||
}
|
||||
|
||||
if (SohImGui::WindowBackend() == SohImGui::Backend::DX11)
|
||||
{
|
||||
UIWidgets::Spacer(0);
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f));
|
||||
if (ImGui::Button("Match Refresh Rate"))
|
||||
{
|
||||
int hz = Ship::Window::GetInstance()->GetCurrentRefreshRate();
|
||||
if (hz >= 20 && hz <= 360)
|
||||
{
|
||||
CVarSetInteger(fps_cvar, hz);
|
||||
SohImGui::RequestCvarSaveOnNextTick();
|
||||
}
|
||||
}
|
||||
ImGui::PopStyleVar(1);
|
||||
UIWidgets::Spacer(0);
|
||||
}
|
||||
UIWidgets::Spacer(0);
|
||||
UIWidgets::EnhancementCheckbox("Match Refresh Rate", "gMatchRefreshRate");
|
||||
UIWidgets::Tooltip("Matches interpolation value to the current game's window refresh rate");
|
||||
UIWidgets::Spacer(0);
|
||||
|
||||
UIWidgets::EnhancementCheckbox("Disable LOD", "gDisableLOD");
|
||||
UIWidgets::Tooltip("Turns off the Level of Detail setting, making models use their higher-poly variants at any distance");
|
||||
if (UIWidgets::PaddedEnhancementCheckbox("Disable Draw Distance", "gDisableDrawDistance", true, false)) {
|
||||
|
@ -313,6 +313,14 @@ bool OTRGlobals::HasOriginal() {
|
||||
return hasOriginal;
|
||||
}
|
||||
|
||||
uint32_t OTRGlobals::GetInterpolationFPS() {
|
||||
if (CVarGetInteger("gMatchRefreshRate", 0)) {
|
||||
return Ship::Window::GetInstance()->GetCurrentRefreshRate();
|
||||
}
|
||||
|
||||
return std::min<uint32_t>(Ship::Window::GetInstance()->GetCurrentRefreshRate(), CVarGetInteger("gInterpolationFPS", 20));
|
||||
}
|
||||
|
||||
std::shared_ptr<std::vector<std::string>> OTRGlobals::ListFiles(std::string path) {
|
||||
return context->GetResourceManager()->ListFiles(path);
|
||||
}
|
||||
@ -731,7 +739,7 @@ extern "C" void Graph_ProcessGfxCommands(Gfx* commands) {
|
||||
|
||||
audio.cv_to_thread.notify_one();
|
||||
std::vector<std::unordered_map<Mtx*, MtxF>> mtx_replacements;
|
||||
int target_fps = CVarGetInteger("gInterpolationFPS", 20);
|
||||
int target_fps = OTRGlobals::Instance->GetInterpolationFPS();
|
||||
static int last_fps;
|
||||
static int last_update_rate;
|
||||
static int time;
|
||||
|
@ -28,6 +28,7 @@ public:
|
||||
|
||||
bool HasMasterQuest();
|
||||
bool HasOriginal();
|
||||
uint32_t GetInterpolationFPS();
|
||||
std::shared_ptr<std::vector<std::string>> ListFiles(std::string path);
|
||||
|
||||
private:
|
||||
|
Loading…
Reference in New Issue
Block a user