Please show off what crt shaders can do!

I tuned crt-royale to make it look like a 31Khz monitor shader for 480p games, specially those mixing 2D sprites and 3D assets. I output these at native 480p so the graphics blend together, then the shader on top (discussed here). I purposefully added artifacts like aberration and some blurring, lifted blacks and color corrected at whim to give it some arcade vibe. It would be cool to replicate this with crt-guest to get some phosphor trail effect.

4 Likes

@Dogway these look gorgeous!

Mind sharing the settings you are using?

1 Like

Super%20Mario%20World%20I-190521-133046 Super%20Mario%20World%20I-190521-133020 Super%20Mario%20World%20I-190521-132947 Super%20Mario%20World%20I-190521-133007

Here’s some screenies! Not sure if I’m happy with the settings yet, but meh lol.

EDIT: Sorry was trying to figure this out, images should be fine now! These are meant to be 1080p images, the extra at the top and bottom is from integer scaling… too lazy to crop.

5 Likes

Thank you! The script is a bit long but it’s basically crt-royale-ntsc-256px-svideo.glslp replacing the svideo part with the following (video output as 480p in core options). I think you could swap shader1 and 2 since color should come first. Then play with values, smoothness, more bloom, gamma, chroma aberration. The first shader is a custom one, replace with repo’s white.point shader.

shaders = "15"

shader0 = "../misc/d93-d65.glsl"
filter_linear0 = true
scale_type_x0 = absolute
scale_type_y0 = absolute
scale_x0 = 1536
scale_y0 = 1080

# NTSC Shader Passes
shader1 = "../blurs/sharpsmoother.glsl"
shader2 = "../misc/color-mangler2.glsl"

filter_linear1 = false
filter_linear2 = false

scale_type_x1 = source 
scale_type_y1 = source
scale_x1 = 1.0
scale_y1 = 1.0
frame_count_mod1 = 3
float_framebuffer1 = true

scale_type2 = source
scale_x2 = 0.5
scale_y2 = 1.0
2 Likes

Got it. So use crt-royale-ntsc-256px-svideo.glslp and override shaders 0, 1 and 2 with the above, set 480 in core, test swaping 1 and 2.

Which one is the white.point?

Thanks for sharing!

Here. The saved preset is a mess until they fix the formatting but here are some values.

bloom_excess = "0.404999"
crt_gamma = "2.299999"
gamma_boost_g = "-0.100000"
gamma_boost_b = "-0.100000"
lumad = "0.300000"
sat_b = "1.130000"
smoot = "1.269999"
levels_contrast = "1.109375"
blb = "0.010000"
blg = "0.010000"
1 Like

The display being used for emulation is definitely a limiting factor when it comes to CRT emulation. I’ve noticed, though, that a lot of people seem to focus exclusively on static image quality over other aspects of a CRT’s performance. There’s also input latency and motion blur to worry about.

Right now, QLED (Samsung, Vizio) is capable of matching or exceeding a CRT in all performance areas except viewing angle! Black level, contrast ratio and color reproduction are all on par. These TVs have input latency low enough that you can add software BFI @ 120Hz (+4ms input lag) and still be below 16ms input latency at 60fps, allowing for next-frame input response at 60fps with BFI enabled @ 120Hz.

With BFI @ 120Hz you can match the motion clarity of a CRT, and the QLEDs also have hardware-based strobing methods to reduce blur even further. It should also be noted that the frame hold time at 60fps is lower than that for LG OLEDs, so the stutter from hardware-based strobing is much less noticeable.

The contrast ratio and black level of these QLED displays is on par with or better than a CRT’s, and all of these displays are wide color gamut displays that should be more than capable of reproducing the limited color palettes of 8 bit and 16 bit games.

Perhaps most importantly, the QLED TVs have max sustained SDR brightness levels that are sufficient to add BFI and scanline effects and still match the brightness of a CRT. The brightest of these TVs (The Vizio P Series Quantum) is almost 800 cd/m2 sustained SDR, which is almost enough to have BFI + scanlines + RGB mask, with the phosphors displaying realistic RGB and luminance values (equivalent to setting the mask_dark parameter to 0.00 with Lottes CRT).

For those in the market, now is an excellent time to buy a new TV! Current QLED displays are capable of matching a CRT’s objective performance capabilities in all areas except viewing angle. With advances in QD tech (or maybe MicroLED?), displays in 5-10 years will be even brighter, have even better blacks, and will have eliminated the viewing angle problem.

I’ve made a list of all currently available TVs that are capable of matching or exceeding a CRT’s performance in several performance categories. I’ll be updating this list as needed. If there are any TVs that should be added to the list, please let me know!

6 Likes

Is that not fixed? I committed the change awhile back, should have been live in 1.7.7…

1 Like

Ah yes, I recall that I just updated today so will give it a try.

Edit: Yes saves them right. After editing the path in the shader presets (to 1.7.7) I can load them back and re-save!

1 Like

Can anybody recommend a good way to record gameplay with retroarch shaders running?

Using AMD card.

Nvidia ShadowPlay (through GeForce Experience) or OBS Studio (also uses NVEnc)

2 Likes

I think it’s better to capture the raw output because if people don’t use the correct scaling, all the scanlines and shader effects wind up looking terrible.

I think you can record w/shaders by going to settings -> recording -> use GPU recording

Then quick menu -> start recording

This should generate a .mkv file in the same directory as Retroarch.exe.

1 Like

The reason I’m wanting to capture with shaders running is because some of the effects aren’t static in the shader. So pictures are about worthless for capturing these effects in action. My goal is to record and upload at 1080p, but idk. I’ll just wing it, lol.

Thanks for the advice and tips, I appreciate them.

Edit: Fixed, because I sounded like an :peach::ok_hand:.

1 Like

(Little off topic) Here’s some reading on an interesting fact that I’d like to share.

2 Likes

Wow, that’s even sharper than an LCD due to the lack of color fringing from an LCD’s sub-pixels. They could have just said “sharpest display.” Pretty cool!

1 Like

Just wanted to give a shout-out to CRT-aperture. In terms of ease of use and overall image quality, it’s probably the best shader currently available.

Since I’m using black frame insertion to eliminate/greatly reduce motion blur, maximum brightness without clipping is a big concern for me.

Compared to the other shaders, CRT-aperture is capable of the greatest brightness without any clipping. It has the best-looking gamma curve while using brightness boost, and excellent options for adjusting the scanlines and sharpness.

With CRT-aperture and black frame insertion, my LCD is now matching the peak brightness of my CRT monitor. I’m seriously impressed; I didn’t think it was possible to get an image this bright with black frame insertion and scanlines enabled. This is with my display’s backlight at 100% and contrast at 80%.

The contrast ratio leaves a lot to be desired, but I’m still barely able to make out the inner bars on the PLUGE test pattern in a fully dark room. The backlight bleed makes it really difficult.

IMO, the next best options are CRT-Hyllian and CRT-Hyllian-Glow, followed by CRT-Caligari. Hyllian’s sharpness adjustment isn’t quite as flexible as Aperture’s, and Caligari can’t get quite as bright as Hyllian or Aperture without clipping.

Many of the other shaders (CRT-royale) are too complicated for what I need, stacking multiple effects on top of each other and/or mimicking low quality video signals and poor convergence, often resulting in a high performance cost and sacrificing ease of use. On the other end of the spectrum you have the ultra-lightweight shaders that simply don’t do enough to improve the image quality, and shaders that lack the options needed for adjusting scanlines and sharpness. CRT-aperture wins when it comes to ease of use, flexibility and image quality, with Hyllian being a close second.

7 Likes

Here’s another example using CRT-aperture, this time going for a low-res RGB look.

1 Like

Mark, I think you should turn on anti-aliasing.

Here are a couple more shots of CRT-aperture. I didn’t like the bloom you get with the default settings, so I reduced it to what I felt was a reasonable level and increased the brightness setting to compensate until I was matching the max brightness on my CRT monitor. This messes with the gamma curve somewhat, but it looks very nice when actually playing a game instead of displaying a test pattern (IMO). This is with BFI enabled and my display backlight at 100%, so brightness and colors look very different in person. The glow in this shader really helps to brighten up the highlights without being too obvious or distracting.

1 Like

Aperture is nice, on my personal scale for easy-to use - looks reasonably good out of the box on every display I’ve used, I’d probably rate Hyllian higher because it’s a bit faster among other things.

1 Like