Please show off what crt shaders can do!

Hello. Shader newb here. For a several weeks now I’ve been reading through threads like this, trying different shaders, and tweaking the settings. At the end of it all I feel completely lost and overwhelmed. I think the biggest reason I get confused is because there are SO MANY shaders to choose from, and they don’t come with any explanations as to why they were created or what their use cases are supposed to be.

Here’s what I’m working with. I play using RetroArch, and I have my file sharing setup so I can seamlessly switch back and forth between my PC and my phone. My PC monitor is an LG 27GN850 (1440p), and my phone is a Samsung Galaxy Note 20 Ultra (2316 x 1080). I prefer to keep integer scaling off and allow the core to provide the correct aspect ratio. This way I get the largest image possible upsized to the top/bottom of the screen with black bars on the left/right.

Some of the bigger questions I have:

  1. What shaders should I use for my screens and their resolutions? Which ones should I avoid?

  2. Should I turn on integer scaling? What are the significant benefits/drawbacks if I do?

  3. I see crt-guest-dr-venom come up a lot as a popular choice, but I don’t understand WHY it’s popular.

  4. Some shaders have several versions. Some differences are obvious such as crt-hyllian vs crt-hyllian-glow. Others I have no clue what the differences are, and they are not explained anywhere such as crt-guest-dr-venom vs crt-guest-dr-venom-fast.

  5. I’m drawn to the hyllian shaders because I see that @Hyllian continues to update them. Will I have those updates if I update my slang shaders through RetroArch’s Online Updater, or will I have to use the links in this forum thread?

As far as personal preferences go, I only really know a couple of things. I don’t like the look of thick, heavy, horizontal scan lines. A little bit is fine since that’s what CRTs looked like back in the day, but I like things to look more consistent along both axes. I also know I don’t like the “cartoony” look of shaders like scalefx and xbrz. I did find Hyllian’s crt-super-xbr as a “best of both worlds” shader. I’m very close to just slapping it on everything and calling it a day, but I can’t get over how some of the finer details are still lost in the pixel blending. For example, in the Legend of Zelda for the NES, the cross on Link’s shield ends up looking like a concave diamond.

Any help or advice will be greatly appreciated.

3 Likes

Getting into CRT Shaders as a newcomer can be initially overwhelming, so here is some advice I have on how to get started.

There isn’t really a specific CRT shader to use for a certain kind of display. This is because CRT Shaders are more geared towards achieving a certain aesthetic and look as opposed to being built for use on a certain display. There isn’t a specific shader that I would say to avoid, but for the time being, I would stay away from CRT-Royale. This isn’t because it is a bad shader or that you shouldn’t use it, but because it’s a very, very complex shader and has a huge amount of parameters involved, so being a newcomer you will be easily overwhelmed by it. It is for those who want to get very technical with the little bits and details of CRT emulation.

I do recommend leaving integer scaling ON. This is because CRT shaders are aimed at emulating the individual scanlines on a CRT display that are drawn when the image is rendered. Without integer scaling, you can run into issues where you see visible artifacts on screen that are a result of uneven scanlines due to non-integer based resolutions. This is why when you see screenshots of these shaders online, you can see ripple patterns and other artifacts when you are not viewing them in full-screen or viewing the image at its full size.

An integer-based resolution is one that is a multiple of the said horizontal and vertical resolution. For example, PS1 games in Retroarch are emulated and displayed with a 240-pixel vertical height. Therefore a 2x integer of 240 is 480, a 3x integer of 240 is 720, a 4x integer of 240 is 960, and so forth.

Unfortunately, this will shrink or expand the size of the screen in Retroarch, depending on if you want to have overscan and want to cut out the outsides of the image to fit the whole screen, or you will have pillar boxing on all sides if you want to see all of the content being displayed.

With your 1440p monitor, even with integer scaling turned on, you can mitigate the amount of pillar boxing excessively since 240 is a 6x integer of 1440. You can leave integer scaling turned on and set the aspect ratio to 4:3 so you can have the proper aspect ratio and games won’t look stretched. However, some consoles such as the Sega Genesis and the SNES use a vertical resolution of 224 pixels, which means that it isn’t a complete integer of 1440, and therefore with integer scaling, you will have some pillar boxing on the top and bottom. It isn’t too severe, however.

With your Galaxy Note 20, on the other hand, and its 1080p vertical resolution, you, unfortunately, will have pillar boxing on all sides because 1080 isn’t an integer of 240 or 224. You can find this out with any resolution by taking the vertical resolution of the display and diving it by the vertical resolution of the console you are emulating (for example, 1440/240=6 which makes it a 6x integer. However, 1080/240=4.5, which isn’t an integer multiple and therefore will result in uneven scanlines without integer scaling).

If you do want to run without integer scaling, you can try CRT-Easymode and CRT-Lottes as they tend to be CRT shaders that tend to look the best with non-integer resolutions. CRT-Aperture, on the other hand, looks absolutely atrocious at non-integer based resolutions and must be run with integer scaling enabled.

There are different versions of CRT shaders made by various users that aim to accomplish different things. For example, shaders marked with “Halation” or “Glow” are made to emulate the CRT Phosphor glow of the display, and often appeal to people who like the “glow” of CRT displays. Others have very specific applications. For example, CRT-Royale-NTSC-Composite is a preset of CRT-Royale configured to emulate the look of a CRT display with a composite signal, same with CRT-Royale-NTSC-S-Video (which emulates S-Video signals). It would take me quite a long time, and it would be quite the long read to this already long response to go through every single one, so I would advise doing intensive research on the various versions of the shaders, or perhaps just testing them out and noting the differences between them.

I don’t know personally how the process for shaders being updated through Retroarch’s online updater works, so if you want to stay updated with the latest versions of these shaders being released, I would suggest using the links provided by the users and download them from there.

As a newcomer, I would say just experiment with different shaders. I find that learning more about the technical aspects of how CRT displays work actually helps me in learning how to better configure these shaders to work as I want them. CRT-Easymode, CRT-Lottes, CRT-Hyllian, and CRT-Geom are great CRT shaders to start with and mess around. They don’t have too many parameters to overwhelm you and are great for getting your feet wet. It all comes down to personal preference in the end though, and what kind of look you are after specifically.

I personally have been using CRT-Guest-Dr-Venom 2, as I find that it is the best shader for running games that run at 480i (interlaced mode games such as Tekken 3). I also has a lot of parameters for fine-tuning colors, adjusting scanline sizes and CRT mask intensity, and many other parameters. Here is a screenshot of the look I have achieved with that shader and my current configuration in Gran Turismo.

Of course, feel free to browse and experiment with what you find most appealing. There are lots of different things you can do and I’d say just start trying different shaders out, tweak various parameters, and see where you can go with it. I know this is a very long read, but hopefuly it will help you out in some way or another :slight_smile:

5 Likes

I think there’s a misconception floating around that consumer CRTs weren’t capable of thick scanlines. A well-tuned 27” Trinitron or later slotmask CRT could have scanlines as thick as those in guest-dr-venom with the scanlines maxed out, or even stronger (see: Sony FV310)

  1. I see crt-guest-dr-venom come up a lot as a popular choice, but I don’t understand WHY it’s popular.

It’s the most versatile and complete shader. It does pretty much anything you want. Naturally, with so much flexibility, there’s a pretty steep learning curve.

Hyllian’s shader is also excellent. It lacks some of the advanced options but it’s easy to use. I think if you want to avoid artifacts, use the vanilla version of the shader. No interpolation method is perfect, though. They all have pros/cons. I’ve spent far too much of my life on this, lol.

With most systems you can also use 5x scale at 1080p, cropping the image. The amount that gets cropped is outside of the safe area for CRTs.

Arcade games ignored the safe area, so you’re better off using a letterboxed resolution for those.

3 Likes

That’s because there’s no schedule or plan involved in these developments. They’re just experiments based on our child memories. My only advice to you is to try as many shaders as possible, learn how to change their parameters, and choose the ones that fill your needs. No one knows exactly what’s the best for you. And yet, we can suggest and help with more specific questions. Begin using simple shaders and then swap to more complex ones. Then, some day you’ll be dedicating 50% of your lifetime to crt shaders (like nesguy, :grin:).

Anyway, I think most of your questions are already addressed by other users.

5 Likes

Thank you. I don’t mind long posts. The more info the merrier! My initial post was almost going to be that long. Then I scrapped it and started over.

I’ve stayed away from the crt-royal shaders because they’re resource intensive. There’s always a 5-10 second pause whenever I apply one.

Information you said like easymode and lottes being good for non-integer while aperture is terrible is exactly the kind of information I’m talking about. It’s not documented anywhere, and tracking it down elsewhere on the internet is difficult and time-consuming. I wish every shader in RetroArch came bundled with a readme.txt file.

I don’t see crt-guest-dr-venom 2 in RetroArch. Just the regular crt-guest-dr-venom. Where do I get it from?

The integer scaling options seem to apply to all of RetroArch. Is there a way to set individual options per core?

2 Likes

You can find it dr venom 2 in this link:

1 Like

@Hyllian do your shaders work best with integer scaling turned on, or can I leave it turned off?

1 Like

Haha I would rather not spend too much of my life on this, so here I am looking for advice from the people who do. I just want to set it, forget it, and enjoy playing the game. A part of me feels bad for having that attitude though, because I know it’s a disservice to the full potential of shaders. I can enjoy a good painting, but I have neither the skill nor the patience to paint one myself.

I was hoping you specifically could answer my question about how often your shaders get pushed through RetroArch. For all shaders in general, can I trust the RetroArch list, or should I look to download them elsewhere on the internet?

2 Likes

Hee Hee, this is what I used to think too :rofl: Then I got to learning more about this stuff and all the possibilities and was hooked :slight_smile:

I know this is not terribly helpful advice, but I wanted to share where I started :smiley:

It really depends on how much you end up liking to tweak. I find Dr Guest-Venom is a great all around shader because it handles interlaced content quite well which is a tricky thing to do.

I do love Hyllian’s stuff too though don’t get me wrong, Hyllian’s is great because it has such a nice look and really not very many parameters.

4 Likes

As a general rule, any shader will work the best with integer scaling.

And yet, some are more robust than others when scaling using irrational factors.

About the crt-hyllian, I think it looks ok with integer scaling off, though some eagle eyes can spot small artifacts. If you can’t spot them, then they don’t exist. :wink:

3 Likes

I constantly check this thread for new crt shaders. I personally like dotmask and slotmask shaders. I want shaders that will look as closely as possible to a standard resolution cga arcade monitor. I know that in order for shaders to look best it needs 8k monitors or tvs. I was wondering if crt shaders will benefit from nvidia DSR and upscale 4k to 8k. Will 8k DSR make these shaders look better than 4k?.

I used to upload my shaders directly to common-shaders (the cg repository). Then, after more than a year without uploading, when I came back, all new shaders were only glsl or slang. Looks like cg is a dying shader language. And then I didn’t have access to new repos (in fact, I don’t know if I have access to the new repos). So I began uploading my shaders to these threads. Besides, some months ago, I’ve heard Retroarch github respotories were hacked and had become unnaccessible until now. I don’t know the status right now, maybe @hunterk may explain the situation.

So, for now, I only update my shaders in this forum.

2 Likes

And how it is compared to crt-royale?

Around the same level, but guest-dr-venom has less settings and was easier resources (weaker hardware).

Just for fun i made i quick benchmark with my card and imageviewer core at default settings and 1080p - glcore:

256x224 results:

  • crt royale: 1020 FPS
  • crt gdv1: 1140 FPS
  • crt gdv2: 1170 FPS

640x480 interlaced results:

  • crt royale: 860 FPS
  • crt gdv1: 960 FPS
  • crt gdv2: 1010 FPS

It could be that gdv1 is faster than gdv2 with very small input resolutions, but gdv2 gets faster with ‘bigger input’ content.

Royale is otherwise a very advanced shader, the only thing i dislike are great parameter ranges and small steps. :grin:

6 Likes

One thing to mention about Royale is that at least in my experience is that it doesn’t look as good at lower resolution than higher resolution, e.g. looks much better at 4K.

I think this is partially related to how it applies it’s masks by sampling at mask texture which is a lot different than the more recent shaders which directly apply color filtering directly to individual pixels at the final resolution so they can be very sharp.

1 Like

Speaking of Royale, any update on the “Integer Scaling” issue I reported ? :slight_smile:

1 Like

Nope not yet :), it’s not forgotten, just on the very long TODO list :wink:

It might be tricky to figure out because again Royale works a bit differently than most shaders and does things in a bunch of different passes, then does the curvature at the end.

This is one of the reasons why it can be a bit slower than some other shaders as well as it has a number of passes at the final viewport res.

Basically any issue that I need to fix with Royale takes me maybe 4X as long figure out how to fix as with any other CRT shader because of the complexity of all the multiple passes.

3 Likes

What shader is that? Is it available through Retroarch?

It’s a collection of shaders for ReShade. I’m still tweaking some things and will post a link to it here in a few days. Some more screenshots :

1 Like