OpenGL Pixel perfect scaling... isn't?
Moderator: ScummVM Team
-
- Posts: 21
- Joined: Mon Mar 14, 2016 4:48 am
OpenGL Pixel perfect scaling... isn't?
Comparing, as an example, Gold Rush! in both Dosbox ECE with openglpp scaling and ScummVM with the same, there's this:
DOSBOX
[img]https://i.imgur.com/xnLnI9q.png[/img]
ScummVM
[img]https://i.imgur.com/Wh9yL5L.png[/img]
yes, it's subtle, but my eyes can't un-see it. The text is just slightly off in places in the bottom, ScummVM picture. It's like the pixels aren't exactly square.
I have it set to OpenGL, Pixel-perfect scaling, fullscreen, with aspect ratio correction turned on.
Can I do something to fix this? Or should this be a bug report?
edit: apparently I can't post images, so I guess you'll have to click on them, sorry about that.
DOSBOX
[img]https://i.imgur.com/xnLnI9q.png[/img]
ScummVM
[img]https://i.imgur.com/Wh9yL5L.png[/img]
yes, it's subtle, but my eyes can't un-see it. The text is just slightly off in places in the bottom, ScummVM picture. It's like the pixels aren't exactly square.
I have it set to OpenGL, Pixel-perfect scaling, fullscreen, with aspect ratio correction turned on.
Can I do something to fix this? Or should this be a bug report?
edit: apparently I can't post images, so I guess you'll have to click on them, sorry about that.
Re: OpenGL Pixel perfect scaling... isn't?
One thing to keep in mind is that the aspect ratio correction stretches the image vertically to go from an original resolution of 320x200 pixels to a multiple of 320x240. If your window size is 320x240 for example, 1 pixel every 5 pixels is repeated, and if your window size is 640x480, 2 pixels every 5 pixels are repeated. To get perfectly homogeneous pixels (where all the pixels from the original image are duplicated the same amount of times) you would need to select a window size to get a scaling of 5 horizontally and 6 vertically, so a resolution of 1600x1200 (or if you have a huge screen you could double that to 3200x2400).
-
- Posts: 21
- Joined: Mon Mar 14, 2016 4:48 am
Re: OpenGL Pixel perfect scaling... isn't?
I'm trying to play in fullscreen, though, and I don't know how to set a custom resolution. Also, like I say, for whatever reason the DOSBox ECE scaler can do it no problem. My resolution is 1920x1080. If that matters/helps. Like I say, if there's a way to set a custom resolution in fullscreen, that would help! I've also tried the normal 4x scaler but the results are similar if not exactly the same. I'm not trying to be Mr. Complainer here, I'm just a stickler for perfectly square, sharp pixels in my old games haha. Also, I know I can just play these games in DOSBox but I like ScummVM! There're no cycles to mess about with etc. I have a windows 98 machine and a DOS machine that I built and a 15 inch CRT, but I like playing on my modern laptop because it's a laptop and I don't have to go sit at a desk.
EDIT: Also it does the same thing if I turn off fullscreen and let it play in a window.
and if I fit to screen instead of pixel perfect.
okay one more edit
The issue is not with the scaler, the issue (as I think you said) is definitely with aspect ratio correction. If I run it centered, so it's tiny, I can still see garbled fonts if I lean in close. Again, if that helps figure out how to solve this. I'd prefer not to play without aspect ratio correction, because then it looks squashed
EDIT: Also it does the same thing if I turn off fullscreen and let it play in a window.
and if I fit to screen instead of pixel perfect.
okay one more edit
The issue is not with the scaler, the issue (as I think you said) is definitely with aspect ratio correction. If I run it centered, so it's tiny, I can still see garbled fonts if I lean in close. Again, if that helps figure out how to solve this. I'd prefer not to play without aspect ratio correction, because then it looks squashed
- MusicallyInspired
- Posts: 1138
- Joined: Fri Mar 02, 2007 8:03 am
- Location: Manitoba, Canada
- Contact:
Re: OpenGL Pixel perfect scaling... isn't?
The DOSBox one is slightly off as well, but not as noticeably as ScummVM's. Both are attempting to compensate by blurring the lines a little, DOSBox's method seems more convincing but both are flawed. You're just not going to get pixel-perfect scaling unless you have a resolution of 1600x1200 (on the monitor itself, not just the game). Anything less is going to have fractional resolution values which need to be rounded to integers (whole numbers). 1600x1200 is the minimum resolution on a non-CRT monitor that can display tall pixels accurately and correctly. Anything lower will implement pixel doubling or anti-aliasing effects.
-
- Posts: 21
- Joined: Mon Mar 14, 2016 4:48 am
Re: OpenGL Pixel perfect scaling... isn't?
[quote=MusicallyInspired post_id=95479 time=1622575676 user_id=5846]
The DOSBox one is slightly off as well, but not as noticeably as ScummVM's. Both are attempting to compensate by blurring the lines a little, DOSBox's method seems more convincing but both are flawed. You're just not going to get pixel-perfect scaling unless you have a resolution of 1600x1200 (on the monitor itself, not just the game). Anything less is going to have fractional resolution values which need to be rounded to integers (whole numbers). 1600x1200 is the minimum resolution on a non-CRT monitor that can display tall pixels accurately and correctly. Anything lower will implement pixel doubling or anti-aliasing effects.
[/quote]
That may be, but neither one looks blurred in actual play. Also, all the As are the same size and shape with the same number of pixels in the DOSBox method, all the Ss etc, and this isn't the case in ScummVM. The holes in some of the As are different sizes, the tops or bottoms of some letters are off by half in some places, and again there's nothing like that in the DOSBox scaler.
Also, HI MI ! nice to see you again, haven't seen you since the AGDI forums.
EDIT: And yeah, I plugged into my 4k TV and set the res to 3200x1800 and now things look square. So thank you!
though incidentally, since that's a multiple of 800x600 I have no idea why it works
The DOSBox one is slightly off as well, but not as noticeably as ScummVM's. Both are attempting to compensate by blurring the lines a little, DOSBox's method seems more convincing but both are flawed. You're just not going to get pixel-perfect scaling unless you have a resolution of 1600x1200 (on the monitor itself, not just the game). Anything less is going to have fractional resolution values which need to be rounded to integers (whole numbers). 1600x1200 is the minimum resolution on a non-CRT monitor that can display tall pixels accurately and correctly. Anything lower will implement pixel doubling or anti-aliasing effects.
[/quote]
That may be, but neither one looks blurred in actual play. Also, all the As are the same size and shape with the same number of pixels in the DOSBox method, all the Ss etc, and this isn't the case in ScummVM. The holes in some of the As are different sizes, the tops or bottoms of some letters are off by half in some places, and again there's nothing like that in the DOSBox scaler.
Also, HI MI ! nice to see you again, haven't seen you since the AGDI forums.
EDIT: And yeah, I plugged into my 4k TV and set the res to 3200x1800 and now things look square. So thank you!
though incidentally, since that's a multiple of 800x600 I have no idea why it works
Re: OpenGL Pixel perfect scaling... isn't?
Thing is - that Dosbox has true perfect integer scaling (not in ECE build anymore), yes, it will have black bars, but with homogenous pixels. Unlike ScummVM where you get black bars AND uneven pixels even with so-called pixel-perfect scaling.
Also with Dosbox you can use pixel shaders to get full-screen image without black bars (but with slight blur) and homogenous pixels (https://github.com/tyrells/dosbox-svn-shaders)
Also with Dosbox you can use pixel shaders to get full-screen image without black bars (but with slight blur) and homogenous pixels (https://github.com/tyrells/dosbox-svn-shaders)
Re: OpenGL Pixel perfect scaling... isn't?
I looked at the two image, and apparently Dosbox stretches a bit the image vertically to get even pixels. Instead of giving a 320x240 ratio (or 4:3 ratio), which is what ScummVM aspect ratio correction provides, Dosbox seems to allow some leeway on the aspect ratio, and in this case the image has a 320x250 ratio (and thus is not exactly 4:3). This way it can repeat all the pixels 5 times vertically instead of having 4/5th of the pixels repeated 5 times and the remaining 1/5th repeated 4 times. This seems like an interesting compromise that could be also implemented in ScummVM.
-
- Posts: 21
- Joined: Mon Mar 14, 2016 4:48 am
Re: OpenGL Pixel perfect scaling... isn't?
[quote=criezy post_id=95483 time=1622589243 user_id=3546]
I looked at the two image, and apparently Dosbox stretches a bit the image vertically to get even pixels. Instead of giving a 320x240 ratio (or 4:3 ratio), which is what ScummVM aspect ratio correction provides, Dosbox seems to allow some leeway on the aspect ratio, and in this case the image has a 320x250 ratio (and thus is not exactly 4:3). This way it can repeat all the pixels 5 times vertically instead of having 4/5th of the pixels repeated 5 times and the remaining 1/5th repeated 4 times. This seems like an interesting compromise that could be also implemented in ScummVM.
[/quote]
That would be amazing! I hope it's not too hard to implement!
EDIT: And just for fun, I also set my resolution to 1600x900, which DOESN'T give square pixels, though 3200x1800 for some unknown reason DOES. I'm just thinking out loud now, it's just weird.
I looked at the two image, and apparently Dosbox stretches a bit the image vertically to get even pixels. Instead of giving a 320x240 ratio (or 4:3 ratio), which is what ScummVM aspect ratio correction provides, Dosbox seems to allow some leeway on the aspect ratio, and in this case the image has a 320x250 ratio (and thus is not exactly 4:3). This way it can repeat all the pixels 5 times vertically instead of having 4/5th of the pixels repeated 5 times and the remaining 1/5th repeated 4 times. This seems like an interesting compromise that could be also implemented in ScummVM.
[/quote]
That would be amazing! I hope it's not too hard to implement!
EDIT: And just for fun, I also set my resolution to 1600x900, which DOESN'T give square pixels, though 3200x1800 for some unknown reason DOES. I'm just thinking out loud now, it's just weird.
- MusicallyInspired
- Posts: 1138
- Joined: Fri Mar 02, 2007 8:03 am
- Location: Manitoba, Canada
- Contact:
Re: OpenGL Pixel perfect scaling... isn't?
Good to see you!.....I'm sorry I don't remember you though lol. Did you go by a different handle? It has been so long.
Re: OpenGL Pixel perfect scaling... isn't?
DOSBox Staging has pixel perfect scaling so it may be a better thing to look at for inspiration.
Re: OpenGL Pixel perfect scaling... isn't?
Yeah, it will be ideal, because right now pixel-perfect scaling in ScummVM will give this results - https://abload.de/img/conquestsofcamelot_kic6kh1.png (every fifth (?) row of pixels is narrower, which is very noticeable in games with heavy dithering )
For comparison Dosbox Staging with pixel-perfect render - https://abload.de/img/sciv-3000cycles_ms-dowskq3.png
Maybe useful info from console
And Dosbox with "pixellate shader" - https://abload.de/img/dosboxecer4452cpuspeedojb2.png
For comparison Dosbox Staging with pixel-perfect render - https://abload.de/img/sciv-3000cycles_ms-dowskq3.png
Maybe useful info from console
Code: Select all
MAIN: Draw resolution: 320x200, double-width, double-height, pixel aspect ratio: 1.20
MAIN: Pixel-perfect scaling (4x5): 320x200 (PAR 1.20) -> 1280x1000 (PAR 1.25)
-
- Posts: 21
- Joined: Mon Mar 14, 2016 4:48 am
Re: OpenGL Pixel perfect scaling... isn't?
Yeah I use a very specific older build of Dosbox ECE that allows surfacepp and openglpp scaling, which is where my first screenshot is from. I can't remember the version number anymore, I have a folder saved on my computer. It's not hard to find if you go looking for it, I don't think.
Re: OpenGL Pixel perfect scaling... isn't?
I have some code that works: https://github.com/scummvm/scummvm/pull/3040
But it has not landed yet in the official ScummVM. As noted in the pull request linked above, I am not sure if the new pixel perfect scaling should replace the old one or if we want both (I think we might want both as some players may prefer to have the exact expected aspect ratio). And I am struggling to find descriptive names for both. So if you have suggestions don't hesitate to tell us.
But it has not landed yet in the official ScummVM. As noted in the pull request linked above, I am not sure if the new pixel perfect scaling should replace the old one or if we want both (I think we might want both as some players may prefer to have the exact expected aspect ratio). And I am struggling to find descriptive names for both. So if you have suggestions don't hesitate to tell us.
-
- Posts: 21
- Joined: Mon Mar 14, 2016 4:48 am
Re: OpenGL Pixel perfect scaling... isn't?
[quote=criezy post_id=95495 time=1622669474 user_id=3546]
I have some code that works: https://github.com/scummvm/scummvm/pull/3040
But it has not landed yet in the official ScummVM. As noted in the pull request linked above, I am not sure if the new pixel perfect scaling should replace the old one or if we want both (I think we might want both as some players may prefer to have the exact expected aspect ratio). And I am struggling to find descriptive names for both. So if you have suggestions don't hesitate to tell us.
[/quote]
I looked at the pull request, there're some new suggestions in messages there that sound like good ideas to me. I have no suggestions myself, but I'm looking forward to seeing it implemented! You've made me very happy, thank you for taking such an interest in my anal-retentive need for square pixels!
I have some code that works: https://github.com/scummvm/scummvm/pull/3040
But it has not landed yet in the official ScummVM. As noted in the pull request linked above, I am not sure if the new pixel perfect scaling should replace the old one or if we want both (I think we might want both as some players may prefer to have the exact expected aspect ratio). And I am struggling to find descriptive names for both. So if you have suggestions don't hesitate to tell us.
[/quote]
I looked at the pull request, there're some new suggestions in messages there that sound like good ideas to me. I have no suggestions myself, but I'm looking forward to seeing it implemented! You've made me very happy, thank you for taking such an interest in my anal-retentive need for square pixels!