-
Notifications
You must be signed in to change notification settings - Fork 128
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add true 1:1 pixel scaling option for optimal external upscaler compatibility #1718
Comments
What your asking for is called Integer scaling and its already in ares. |
You're right. Those systems seem to do prop 1:1 scaling. The megadrive system, famicom and super famicom systems all do proper integer 1x scaling for me. Looking at it, I am encountering this problem with the N64 and Playstation cores specifically. I am not sure if there are other systems effected too. I am running the latest version of windows 11. Display scaling in windows is set to 100%. Graphics card is an Nvidia 4090 with the latest drivers. I have size set to 1x with integer scaling as output. |
Does setting size to x1 and using stretch work? Its what I use. Haven't really use shaders on other things so i dont have a good way to tell if it looks right. |
Yes, I have integer selected and have also tried pixel perfect, fixed scale, best fit, and stretch. I also tried all the variations of aspect correction, adaptive sizing, and auto centering toggled on and off. I also tried switching between OGL3.2 and directx9 renderers. they all have the same behavior. It sounds like this may be more than just a simple problem of being scaled by 2x prior in error. If framebuffer allocation is fixed and not adaptive to the real N64 output per game, then adding that adaptability may take more work that I thought. It sounds like high quality downscaling with external software prior to upscaling might be the solution for now. |
The n64 video chip has a forced internal 2x scaler. This means that its base pixel size is double the equivalent scale of other systems. I made a PR that negated the internal scaling at odd intervals (1x, 3x, etc) and moved the hw intervals to 2x, 4x, etc. This would've done what you're expecting but it was not accepted. |
Is your feature request related to a problem? Please describe.
Yes - the current scaling options in Ares don't provide true 1:1 pixel mapping. The "1x" setting actually displays each original pixel as 2x2 pixels, "2x" displays as 4x4, and so on. This prevents effective use of external upscaling solutions like Magpie with ONNX filters, which work best when processing the original unscaled pixels.
Describe the solution you'd like
Add a new "Native" or "True 1x" scaling option where one pixel from the emulated system corresponds exactly to one pixel on the display in windowed mode. This would mean updating the current scaling system so that "1x" actually means 1:1 pixel mapping, with other scale factors adjusted accordingly.
Describe alternatives you've considered
Using a different external upscaler that can handle pre-scaled content, but this would likely result in lower quality output and increased procesing compared to processing the native resolution.
Manually editing window size, but this isn't practical as a long-term solution and wouldn't maintain perfect pixel mapping and often leads to downscaling artifacts due to pixel misalignment during the downscale.
Changing to 100% scale in windows display settings doesn't appear to fix the issue either.
Additional context
This feature would be particularly valuable for users who want to use external upscaling solutions like Magpie to apply high-quality scaling filters. The current scaling behavior makes it impossible to achieve optimal results since the image is already scaled before it reaches the external upscaler. True 1:1 pixel mapping would allow for the best possible image quality when using external upscaling solutions.
The text was updated successfully, but these errors were encountered: