Integer-ratio upscaling with NO BLUR (e.g. FHD → 4K with logical pixel as 2×2 same-color physical pixels)

New ideas and suggestions.
User avatar
MT_
Posts: 18
Joined: Wed Jan 17, 2018 3:52 pm

Some games’s UI does not scale

Post by MT_ »

Zeus wrote:I'm surprised one would choose non-blurred upscaling over uprendering as this is clearly an inferior method.
Besides the retro-feeling purpose, there are games that just have their user interface being bitmap-based and not scaled at all according to resolution, which is especially awful at such high resolutions as 4K (3840×2160).

Can’t say for Glide games in particular, but there are a lot of such pre-4K-era games in general, e.g. main menu in Half-Life 2 gets tiny at 4K, same happens with toolbars in Cities XL Platinum that makes the game literally unplayable at 4K. Switching to a lower resolution helps, but then the picture gets blurry.
Zeus wrote:On the other hand, the thread at nVidia forums is now almost 3 years old and they clearly don't give a damn, so maybe you're right, maybe I should think about it...
We would all appreciate nonblurry integer-ratio upscaling in nGlide that would make nGlide even greater.
Last edited by MT_ on Sun Feb 04, 2018 4:56 pm, edited 3 times in total.
User avatar
MT_
Posts: 18
Joined: Wed Jan 17, 2018 3:52 pm

Possible programmatically on driver level

Post by MT_ »

yrbrkfstdspsbl875943 wrote:the proper sharp scaling is possible even in user space and without losing hardware acceleration.
Moreover, the possibility of proper nonblurry scaling on driver level is proved by such scaling implemented programmatically in nVidia driver 384.47+ for Unix (Linux, Solaris, FreeBSD).

Too bad the nVidia’s implementation is currently buggy (as described in the “Progress” section of my article) and is limited to a narrow set of Unix users for already over six months.
User avatar
Zeus
Site Admin
Posts: 1712
Joined: Sun Sep 21, 2008 2:51 pm
Contact:

Re: Integer-ratio upscaling with NO BLUR (e.g. FHD → 4K with logical pixel as 2×2 same-color physical pixels)

Post by Zeus »

Ok, I've made a decision. ;)

The next release will feature not only Integer-ratio upscaling, something you guys asked for, but also Integer-ratio uprendering.

The latter is already supported, but kind of complicated to use in the current form (you not only need to know original resolution the game is running at but also disable a scaler in graphics drivers panel). With the new approach you'll be able to activate it with just 3 clicks without switching target resolution in nGlide configurator or touching graphics drivers panel settings.
User avatar
MT_
Posts: 18
Joined: Wed Jan 17, 2018 3:52 pm

Great!

Post by MT_ »

Zeus wrote:The next release will feature not only Integer-ratio upscaling
Great! And just to make sure the point of integer-ratio upscaling is 100% clear to you:

1. When integer-ratio upscaling is enabled, the renderer (nGlide) automatically calculates the MAXIMUM integer ratio to fill the physical display AS FULLY AS POSSIBLE, whatever the game’s requested resolution is.

2. Old games did often switch resolution multiple times during the SAME GAME SESSION: e.g. it could be 320×200 during playing a video intro, 640×480 in menu, and 800×600 during gameplay. The renderer should RECALCULATE the ratio automatically when the game switches the resolution during the game session.

3. Each rendered image pixel is represented by a perfect SQUARE group of INTEGER number of SAME-color physical pixels, with NO BLUR. For example, with 1920×1080 (the game’s internal resolution) image on 3840×2160 (4K) display, one image (game’s) pixel would be represented by a group of 4 (2×2) IDENTICAL physical pixels.

4. The resulting upscaled image is CENTERED on the screen.

5. The REST SPACE (if any) is FILLED-IN WITH BLACK or a custom color specified by the user in nGlide settings.

6. The physical display always receives signal at the display’s NATIVE resolution (e.g. 3840×2160), so that the display’s or GPU’s own BLURRY scaling is NOT applied. Upscaling is SOLELY done by the renderer (nGlide).

P.S. Could you explain the point of the integer-ratio upRENDERING that you are planning to implement too?
User avatar
Toshiba-3
Posts: 23
Joined: Mon Mar 22, 2010 12:47 am
Location: Belgium/France
Contact:

Re: Integer-ratio upscaling with NO BLUR (e.g. FHD → 4K with logical pixel as 2×2 same-color physical pixels)

Post by Toshiba-3 »

Looking forward to this feature as well! :)
Quake's source port Quakespasm has something similar and it's nice. While playing old games with desktop resolution is awesome, I find some get a 'shallow' look to them with such definition if you get what I mean. Somehow playing them in their original resolution makes them look more detail-packed (but I don't like the look of linear upscaling).
Image / carmageddon add-ons at road reaction
yrbrkfstdspsbl875943
Posts: 9
Joined: Mon Jan 22, 2018 6:50 pm

Re: Integer-ratio upscaling with NO BLUR (e.g. FHD → 4K with logical pixel as 2×2 same-color physical pixels)

Post by yrbrkfstdspsbl875943 »

Toshiba-3 wrote:Looking forward to this feature as well! :)
Somehow playing them in their original resolution makes them look more detail-packed (but I don't like the look of linear upscaling).
I think that the main advantage of using low resolution on purpose (besides the retro-style) is that it hides all the other missing details.
The old games simply were not designed for the resolutions that we have now-days. Back then (OK actually not only back then but you know what I mean) the game designers had to find a good balance between performance, texture resolution, polygon count and screen resolution. When you play an old game with a resolution that is to high then the old low-resolution textures at a low distance to the "camera" get very blurry. (Well unless you manage to force the texture filtering to nearest neighbor which most games do not support. Also nearest neighbor can look kinda ugly in case of textures on 3D objects, so the usage of bilinear interpolation in case of regular texture filtering is kind of justified. Is this case you just have to pick the lesser evil.)
I actually see two reasons besides the retro-style that make low screen resolution for old game useful:
1. It gives a better balance between screen resolution and texture resolution (in context of the problem I just mentioned).
2. It helps to hide the ugliness of the 3D objects with low amount of polygons. You just don't see so many straight lines and sharp edges anymore (except those caused by the screen pixels, but hey it's the good balance that counts).
But in the end of the day it's all just a matter of taste and a matter of what you consider to be a lesser evil. Surely there are people who would disagree with me as well.
IMHO an old game should be played in a resolution that it was designed for. That's how the game was intended to look like by the artists who made it in the first place.
Game design is an iterative process. Artists create stuff, test it to see how it looks and change it if it doesn't look good enough. Then the process in the previous sentence is repeated until everybody is more or less satisfied. If we (the audience) want to have the best possible experience then maybe it's better for us not to step to far away from the conditions the game was tested on (and was thus designed for).
User avatar
MT_
Posts: 18
Joined: Wed Jan 17, 2018 3:52 pm

Quakespasm

Post by MT_ »

Toshiba-3 wrote:Quake's source port Quakespasm has something similar and it's nice.
Could you be more specific? How exactly the feature works and looks like (example videos, screenshots?) and how exactly can it be enabled in Quakespasm? (E.g. with what exact option? Do you mean some `r_scale`? How exactly should it be used?) Thanks.
User avatar
Zeus
Site Admin
Posts: 1712
Joined: Sun Sep 21, 2008 2:51 pm
Contact:

Re: Great!

Post by Zeus »

MT_ wrote:When integer-ratio upscaling is enabled, the renderer (nGlide) automatically calculates the MAXIMUM integer ratio to fill the physical display AS FULLY AS POSSIBLE, whatever the game’s requested resolution i
Yes.
MT_ wrote: Old games did often switch resolution multiple times during the SAME GAME SESSION: e.g. it could be 320×200 during playing a video intro, 640×480 in menu, and 800×600 during gameplay. The renderer should RECALCULATE the ratio automatically when the game switches the resolution during the game session.
Yep.
MT_ wrote: 3. Each rendered image pixel is represented by a perfect SQUARE group of INTEGER number of SAME-color physical pixels, with NO BLUR. For example, with 1920×1080 (the game’s internal resolution) image on 3840×2160 (4K) display, one image (game’s) pixel would be represented by a group of 4 (2×2) IDENTICAL physical pixels.
Yes, exactly as you described.
MT_ wrote: 4. The resulting upscaled image is CENTERED on the screen.
Yes.
MT_ wrote: 5. The REST SPACE (if any) is FILLED-IN WITH BLACK or a custom color specified by the user in nGlide settings.
With black, yes.
MT_ wrote: 6. The physical display always receives signal at the display’s NATIVE resolution (e.g. 3840×2160), so that the display’s or GPU’s own BLURRY scaling is NOT applied. Upscaling is SOLELY done by the renderer (nGlide).
You will be able to set any target resolution you want in nGlide configurator. If you set it to "Screen resolution: By desktop" (or "Screen resolution: 3840x2160" if a display is 4K) a display will receive a signal at its native resolution.
MT_ wrote: P.S. Could you explain the point of the integer-ratio upRENDERING that you are planning to implement too?
To give users the ability to play games at much higher resolutions than originally designed, but without HUD/UI/menus distortions that often occur when rendering at non-integer ratios.

It's a "golden mean" between uprendering to a display native resolution and upscaling at integer ratios.


yrbrkfstdspsbl875943 wrote: The old games simply were not designed for the resolutions that we have now-days
I kind of disagree as many old games offered a wide range of resolutions between 640x480 (what we had 20-years ago) and 1600x1200 (pretty much what we have nowadays, 1080p is only 8% higher). But I get what you're trying to say.
yrbrkfstdspsbl875943 wrote: IMHO an old game should be played in a resolution that it was designed for
yrbrkfstdspsbl875943 wrote: You just don't see so many straight lines and sharp edges anymore
yrbrkfstdspsbl875943 wrote: Surely there are people who would disagree with me as well
Will you be surprised if I say you're in 5% minority? ;) At least that's what my experience says after spending all these years on this forum.

Thankfully with this new addition everyone will be satisfied.
yrbrkfstdspsbl875943
Posts: 9
Joined: Mon Jan 22, 2018 6:50 pm

Re: Great!

Post by yrbrkfstdspsbl875943 »

Zeus wrote: Will you be surprised if I say you're in 5% minority? ;) At least that's what my experience says after spending all these years on this forum.
A little surprised, but not surprised enough to fall of my chair. :mrgreen:
User avatar
MT_
Posts: 18
Joined: Wed Jan 17, 2018 3:52 pm

Re: Great!

Post by MT_ »

Zeus wrote:Yes, exactly as you described.
Great.
Zeus wrote:
MT_ wrote:P.S. Could you explain the point of the integer-ratio upRENDERING that you are planning to implement too?
To give users the ability to play games at much higher resolutions than originally designed, but without HUD/UI/menus distortions that often occur when rendering at non-integer ratios.
Good point, that’s perfect. Thanks.
Post Reply