Lyall / MetaphorFix

A fix for Metaphor: ReFantazio that adds ultrawide/narrower support and much more.
MIT License
298 stars 4 forks source link

Default Resolution Scale causes small performance loss unless reset in Settings at launch #71

Open MeovvCAT opened 6 days ago

MeovvCAT commented 6 days ago

My resolution is 100% in-game and 1 in the MetaphorFix.ini configs. With MetaphorFix installed, the following bug can be replicated:

This results in an odd increase in performance of about 10% to 20%. Without MetaphorFix installed, this does not occur and the performance is at peak by default.

I have also tried changing the override in the ini to a neglible increase/decrease (99% and 101% resolution respectively) and the performance also does increase in these scenarios. I suspect something strange is happening when the resolution override is set to the default value.

I noticed this on 0.8.1 with the following settings:

;;;;;;;;;; General ;;;;;;;;;;

[Intro Skip]
Enabled = false
SkipMovie = false

[Gameplay FOV]
Multiplier = 1

[Menu Framerate Cap]
Enabled = true

[Fix Analog Movement]
Enabled = true

[Force Controller Icons]
Enabled = false

[Disable Camera Shake]
Enabled = true

[Master Volume Override]
Volume = 4

[Game Window]
Enabled = true

;;;;;;;;;; Ultrawide/Narrower Fixes ;;;;;;;;;;

[Fix Resolution]
Enabled = true

[Fix Aspect Ratio]
Enabled = true

[Fix HUD]
Enabled = true

[Fix FOV]
Enabled = true

[Fix Movies]
Enabled = true

;;;;;;;;;; Graphics ;;;;;;;;;;

[Custom Resolution Scale]
Resolution = 1

[Disable Dash Blur]
Enabled = true

[Disable Outlines]
Enabled = false

[Ambient Occlusion]
Resolution = 0.1

[LOD]
Distance = 20

[Shadow Quality]
Resolution = 4096
Lyall commented 6 days ago

Can't seem to replicate this on my end.

Here is after launching the game: METAPHOR_2024_10_15_19_09_06_425

Then after changing resolution, then changing it back: METAPHOR_2024_10_15_19_09_49_931

Also I don't think anything is going wrong with custom resolution scale set to 1. If it's misreading it or something you'd end up with a message in the log. This section of code will not execute if the custom resolution scale is set to 1.

  // Set custom resolution scale
  if (fCustomResScale != 1.00f && ctx.rcx + 0x888) {
      // Set res scale option to 4 (100%)
      *reinterpret_cast<int*>(ctx.rcx + 0x888) = 4;
      ctx.rax = 4;
      // Write new resolution scale
      Memory::Write(ctx.rdx + 0x10, 1.00f / fCustomResScale);

      spdlog::info("Resolution Scale: Custom: Base Resolution: {}x{}.", iCurrentResX, iCurrentResY);
      spdlog::info("Resolution Scale: Custom: Scaled Resolution: {}x{}.", static_cast<int>(iCurrentResX * fCustomResScale), static_cast<int>(iCurrentResY * fCustomResScale));
  }

  // Log res scale option for AO
  iResScaleOption = (int)ctx.rax;

Can you post your MetaphorFix.log file? It might shed some light.

MeovvCAT commented 6 days ago

Of course. Not a massive issue, just a minor annoyance if I have to toggle resolution every time I open the game.

MetaphorFix.log

Lyall commented 6 days ago

Of course. Not a massive issue, just a minor annoyance if I have to toggle resolution every time I open the game.

MetaphorFix.log

Yeah so there's nothing in your log about adjusting the resolution scale, so that part of code I posted is not being executed at all. The only thing of note there is that you're setting the ambient occlusion resolution very low, I don't know if perhaps that is linked to the performance delta you are seeing. Can you try with MetaphorFix.ini at all default settings and see if the issue is still reproducible for you?

Edit: It also may be linked to the camera farplane stuff I added when tweaking LOD distance, but that wouldn't account for the performance recovering upon changing resolution back and forth. 🤔

MeovvCAT commented 6 days ago

Can you try with MetaphorFix.ini at all default settings and see if the issue is still reproducible for you?

Still occurs. Depending on the area the FPS difference really does range from +10 to +30 fps, it's really bizarre. I had tried default ini settings originally because I assumed LOD/Shadow Resolution was the culprit behind the performance loss, but the impact of those tweaks is minimal.

The only thing of note there is that you're setting the ambient occlusion resolution very low

It was set to default (1.0) before I noticed the performance drop. I only set it to 0.1 because I have AO disabled anyway and a similar bug existed in the demo that forced Ambient Occlusion to be enabled when changing resolution scale regardless of setting, so I forced it to be at its lowest to make sure it wasn't that again. (It's not)

If you're unable to reproduce the error I could only assume it's an issue with my particular hardware, but it makes no sense that it only occurs when MetaphorFix is installed. Is there any other config change you think I can experiment with? If not, I can just keep toggling the settings on boot, but it's a really odd bug

MeovvCAT commented 5 days ago

Updated to 0.8.2. For what it's worth, can at least rule out LOD Farplane as the culprit.

100% Resolution Scale, on Launch 90

Setting to different value then restoring to 100% Resolution Scale 115