WerWolv / ImHex

🔍 A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.
https://imhex.werwolv.net
GNU General Public License v2.0
45.31k stars 1.97k forks source link

[Bug] Horrible font rendering because of FXAA #1263

Closed RunDevelopment closed 1 year ago

RunDevelopment commented 1 year ago

Operating System

Windows

What's the issue you encountered?

When I first started ImHex after a fresh install, everything was blurry. Everything.

image image

Here's a comparison with a screenshot from your website. image


After having looked at the files of your application, I noticed a lot of graphics libraries I typically see in games. Combined with the custom UI and FPS limit setting I saw, I guessed that you implemented a custom renderer for the application. So the default graphics settings of my Nvidia driver probably apply.

And that was the cause of the issue. I had FXAA enabled in global settings. The fix was to disable FXAA for ImHex specifically.

I reported this a bug, because I believe that this shouldn't have been an issue in the first place.

How can the issue be reproduced?

See above.

ImHex Version

1.30.1

ImHex Build Type

Installation type

MSI

Additional context?

No response

WerWolv commented 1 year ago

Hey

I'm not sure there's much I can do about this. ImHex uses glfw to create a window and then renders everything through OpenGL using ImGui. The rendering mechanism is similar to what games use which is probably why those tools you're using wrongfully identifies ImHex as one. That's on the tool to fix though, not on us. What do you suggest?

RunDevelopment commented 1 year ago

That's on the tool to fix though, not on us.

From the perspective of a user, this doesn't matter. It's your program that looks blurry.

What do you suggest?

I have practically no experience with OpenGL or glfw, so I don't have much to say here. That being said, there are games that this FXAA setting does not apply to. I recently played Elden Ring (DX12) and Dark Souls 3 (DX11) which completely ignored my FXAA setting. So it seems that there is some way to bypass the issue.

WerWolv commented 1 year ago

It's your program that looks blurry.

That's like complaining to Microsoft that Windows runs badly after installing a virus on your computer lol

As far as I know, I have no control over what your driver does. I explicitly disabled anti aliasing in software already but it doesn't seem to honor this setting. Maybe it also just does it with OpenGL and not D3D, no idea. I know NVidia keeps lists of games and applies "recommended" settings according to those. Since ImHex is probably not on one of them, it just applies whatever it thinks is the best.

RunDevelopment commented 1 year ago

That's like complaining to Microsoft that Windows runs badly after installing a virus on your computer lol

With the minor difference that the software that messes with ImHex is the official driver of the GPU your program is using for rendering.

I know NVidia keeps lists of games and applies "recommended" settings according to those.

Yes, but that is probably not relevant here. The games I listed had FXAA enabled in NV Control panel, but it still did not apply.

WerWolv commented 1 year ago

Are you sure you didn't globally enable this yourself at some point and just forgot? I do have a NVidia card myself and I never had any issues like that with ImHex or any other tools. This is also the first time this is being reported which makes me think that this isn't the default configuration.

Most likely, the reason why it's so noticeable in ImHex but not in other applications is because we use ImGui's default font by default which is a pixel-perfect bitmap font. Changing it to a different one yourself in the settings will probably help but it won't fix all issues.

If there's anything else I can do to forcefully override the global driver settings, I'm happy to do so. But I honestly don't believe there is.

WerWolv commented 1 year ago

I played around some more and managed to reproduce the issue by manually changing the Adjust Image Settings to Use advanced 3D image settings and then enabling the Antialiasing - FXAA option in the global Manage 3D Settings screen.

These are both advanced options (meaning if used incorrectly they will break things) and are turned off by default (the Let the 3D application decide and Use my preference emphasising don't enable it) so to me this is entirely a user / configuration error. Non the less, I tried to force-disable FXAA in ImHex using like 5 different ways and the driver seemed to completely ignore each of those attempts.

I truly believe you shouldn't be messing with global driver settings like that but instead enable / disable specific options per applications to avoid issues like this with ImHex or other applications in the future. Force-enabling settings likely makes things worse instead of helping. Both game and application devs usually implement these features (and often provide settings for them) in their software in ways that work best for their specific use-case. Thanks for the report though, if in the future another person has the same issue, I will direct them here.