Please show off what crt shaders can do!


I love that people want to experience games as they felt on the old tubes, but, having lived through that era, I am way happier to play with the AA filters and go the other direction with a moderate upconvert of the graphics that finally feels like it work nicely. Takes a bit of configuring, but I feel like it’s worth it. The end result is much nicer than most of the classic algorithms.

That said, I hope everybody lands on that visual sweetspot. Cheers!


For some people, nostalgia is the motivating factor. Others, like myself, want to view the pixel art the way the artist(s) intended for it to be viewed. Scanlines, phosphor structure and the lower sharpness of CRTs were all definitely taken into account by pixel artists when they made the art for these games (see the quote, buried somewhere in this thread, on the “half dot” technique). Without those qualities, you’re no longer displaying the pixel art in its native display environment. Even the Japanese word for “pixel” - literally translated as “dot”- indicates that pixel artists at the time were working with a very different medium (CRTs) compared to today’s ultra sharp digital displays.


Oh, certainly! It is not that i don’t get it, my love of the earlier eras of gaming stemmed from this, and the garrish reality of a rom played bare in its raw information rather than that information being geared for the ‘distortion’ of the medium it would be viewed through often isn’t attractive, as it was never meant to be played that way.

And that’s great!

I like having competent algorithms that upconvert merely because, in that same way that many enjoy playing as close to intended presentation as possible, I enjoy seeing what might have been if designers had sharper, more detailed technology available (Or, rather, that the screens and hardware people were playing on were thus). I grant that it’s not perfect, especially as the settings in those images I presented go a little beyond what I actually play with, but in some cases they are flat out amazing, making a chain of 12 pixels turn into a smooth circle, or taking the best representations of shape designers could lay down with limited pixel grids and turning them into digital brush strokes. Until the AA filters came along, I was moderately satisfied by the use of LQ4XSai filters, as they clumsily managed to clean up lines, but stuff such as the AA Shader 4 Level 2 really goes to that next level in a way I didn’t think we could without using something like Google’s Deepdream AI. It even seems to consider each layer within the active ROM individually, as opposed to being a simple overlay.

Sorry, wall of text. Just really happy with where things have developed in both directions of ROM emulation.


The limitations of the medium informed the artist’s work all through its creation. Had they been working with sharper, more detailed technology, they would have made completely different art. When LCD screens came along starting with handhelds, pixel artists had to alter their techniques.

It’s a bit like taking a pointilist painting and applying a scaling algorithm to it to get rid of all the dots.

It’s cool that you found something you like, though. One of the great things about RA is that it has enough options to satisfy pretty much anyone.


True, as we see as color bit depth and pixel resolution change, such as the sprite for Mario in Super Mario Bros. and Super Mario World, no level of dynamic filtering is going to turn the one into the other, and with an expanded palette they painted a completely different world.

And, I agree! That there are an expanding ways to play the same game visually is fantastic, and finding that RA supports more filters to that respect, and that most of them are customizable is a huge leap over the same 15 filters we’ve had available for the past 20ish years.

One of the things that bothers me in emulation culture (no implication on this thread. I’ve neither read all the posts or have gotten a sense of the sentiment) is that the idea that filtering toward CRT visuals is the ONLY way to play, and I just disagree with that. Sometimes it’s nice, sometimes just crisp pixels works well, and most of the time I like to play with smooth lines, expanded color depth (accomplished through the color blending done by AA [see the vines in my screenshot]) and sharp, otherwise unblurred visuals. All of the options are valid, I’d just like to see more love for non-destructive tooling around with the visuals without doing any direct alteration to sprite palettes or otherwise modding the ROM itself. I don’t have any problem with that, either, mind you, so long as proper credit is given/remains intact after any mod, and personally in this respect I’m mostly only interested in translations and restorations of original content, such as the script for Final Fantasy VI, restoration of the proper series number, and retention of items still in the code that were removed for the western release.

… Which is entirely off topic but vaguely related.


Years ago I was an HQ2X type of person for pixel games. I hated seeing any pixelation and was geared more towards bringing the game’s to an updated hi def look.

Then a member on the Hyperspin forums told me “Dude…by using those filters, you’re missing out on many details the game artists used by relying on the effects of CRT’s. Enjoy the pixels!!!”

Since then I started using scaline shaders, realizing IMO it made the game’s feel sharper and more prominent, detailed. Since then I now only use CRT shaders for any pixel game, even indie games I’ll use Rocketlaunchers built in CRT shader (Reshade just doesn’t seem to work for me whenever I’ve tried it)I also collect CRT TV’s. People throw them out all the time. I have like 4 in my basement :crazy_face:


Well, I happen to be of the school of thought that you do need to display these graphics with CRT filtering (scanlines, phosphors, lower sharpness) for them to look the way the artist intended. They drew the sprites taking scanlines into account and relied on the phosphor structure and lower sharpness to create an image that looks higher definition than it really is. If you dig through the thread there’s a pretty great article on creating 2D video game art in the 80s and 90s.

But, whatever floats your boat.


Can you explain the lower sharpness some more? Also what are some shaders that can achieve this (I imagine image-adjustment is one)?


Well, if we’re just having the conversation about these methods making the games look as intended, there’s no argument to be had, you’re right. I’m familiar with the methods and enjoy and appreciate the results in certain, especially on games from the era around the Atari 5200 and before. Emulating the CRTs and various proclivities (especially for games like Asteroids, where the polylines were so bright you might as well have been staring down a laser diode) is the only way to bring life to those scant pixels, and it looks and feels good.

Retro game designers now make great use of similar effects hardcoded into their game, such as Axiom Verge, and have been making good use of chromatic abberation at the same time.


Even an RGB CRT is going to be less perfectly sharp than a 1080p display due to a lower TVL count, which is related to the phosphor structure, beam focus and beam dynamics. Even with a high TVL count, an RGB CRT’s scanline beam dynamics when displaying 240p content make the image less perfectly sharp than the same image on a 1080p LCD upscaled with nearest neighbor (with inserted scanlines or not).

The exception to this is 900 and 1000 TVL CRTs, which can be virtually indistinguishable from a 1080p display depending on the content being displayed. When displaying non-upscaled 240p content, the 900 and 1000 TVL CRT will look much different than the 1080p LCD as a result of the scanline beam dynamics. If, however, you’re upscaling the content to 4x or 5x its original size using nearest neighbor and running the monitor at its highest resolution, the result is virtually identical to what you would get on an LCD using nearest neighbor.

As far as shaders to replicate CRT blur: Bilinear filter looks weird, because it’s still not blurry enough to blend dithering, like you would get with a composite signal, but it’s also a lot blurrier than what you would get with RGB or S-video. If you want a clean RGB look, then you need something that is less blurry than bilinear filter, and which only blends the pixels horizontally, otherwise you’re messing with the scanlines. I’ve been relying on the adjustable x-axis blur based on Quilez’s scaling, found in the zfast_crt shader. I’m not sure if there are better/similar options which are similarly lightweight. Perhaps someone else could shed some light on this?


I think guest’s shader has sharpness stuff for this, but guest’s shader is kinda heavy(from my experience) at higher resolutions.

Does image-adjustment’s sharpness setting help any?


It doesn’t seem to do anything from what I can tell, but that may be because of how the shaders are stacked.


Could you try running just image-adjustment and then try and see if it makes any difference?

I’d really appreciate it.


Okay, so it does do something, but linear filter needs to be enabled with image-adjustment for it to work. It makes the bilinear filtering less blurry, similar to the Quilez scaling in zfast, but slightly different.


image-adjustment’s sharpness only works with bilinear filtering, as it’s intended to let you sharpen that up if you think bilinear is too blurry. It just mixes between regular bilinear and quilez/perlin filtering.

If you want to have variable blurriness, tvout-tweaks is probably a good place to start, or retro/shaders/ControlledSharpness.


I’m playing around with guest’s shader and really loving the results! Is there a CRT overlay that works well with this shader? Would love to make a full on preset with it.


so is this actually doing the same thing as the x-axis blur parameter in zfast_CRT, or is there a difference between the two?


Ah, yeah, looks like it.


looks like it’s doing the same thing, or it looks like there is actually a difference? Asking because I’m trying to put together a custom shader and don’t want anything redundant in there.


It’s doing the same thing. The only difference is that zfast only does it on the x axis while image-adjustment does it to x and y.