A shader for sharp pixels (2017)
gamingprojects.wordpress.com
gamingprojects.wordpress.com
Worth pointing out that most SNES games had a vertical resolution of 224 pixels. At that size an upscale for a 1080p screen results in a maximum pixel irregularity of 1/5 (most pixels are 5x5 with the occasional 4x5 and 4x4 pixels thrown in). That might be close to negligible on a moderately high DPI screen.
Interesting side note about modern pixel art games: Celeste has a native resolution of 320x180. That's almost exactly the same number of pixels (or scan lines) as a typical SNES game, but the number is chosen to divide evenly into 1920x1080 (and 1280x720), meaning that you can get perfect pixels on common modern resolutions without fractional scaling. Kind of brilliant, actually.
If you're not convinced, this twitter account makes great comparisons : https://twitter.com/CRTpixels In my opinion, even the most basic scanline shader is worth it.
Oh, also, pixels were often NOT square at the time. angry look at capcom
A distinction I didn't appreciate until the Analogue Pocket's impressive Game Boy screen emulation drew my attention to it. I'm not aware of any GB emulators that do the same thing but I'd love to be mistaken.
Search down the article for the “The preview function” section which includes an image perfectly illustrating the point¹, showing how much better things designed with CRTs in mind look on CRTs, and discusses the way many designers worked: a high def screen for working on and a more bog-standard CRT to preview the results on as that is what the players would be viewing the game on.
A gamer friend of mine who has recently had a retro period has a converter that sits between his emulator box and TV and does a good job of adding back in CRT artefacts. No doubt some emulation solutions do this in software out of the box.
----
[1] https://64.media.tumblr.com/8d2cf7adae94fde97d1a8c9cf78a46a2... for a direct link to that image, assuming it isn't referrer protected
E.g. point-filtered 1.727x scaling produces pixels sized 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 1, ... (horrid!)
But you could instead create pixels sized 2, 2, 1.5, 1.5, 2, 2, 1.5, 1.5, 2, 1.5, 1.5, ...
I have seen this used and think it's fairly unintrusive, but would still suffer some "shimmering"/"pixel wobble" when something is moving across the screen very slowly or the screen scrolls slowly.
- https://filthypants.blogspot.com/2017/01/shaders-for-sharpes...
http://bogost.com/games/a_television_simulator/
His article on the effort is pretty high level with no real meaty-details. Probably would have to look at the source code for Stella for that.