Please show off what crt shaders can do!

Don’t worry, you weren’t rude, I’m also a curious guy :partying_face:

1 Like

Extraordinary! Setting for those?

1 Like

Download link : https://gofile.io/?c=rluFfh (copy paste everything in your retroarch shader directory,user-settings.h included)

I included a second preset in this folder, huge mask size with curvature and smooth rendering. Note that with geometry mode = 0.0 mask will be sharper and phosphors more apparent for better rendering but without curvature in return. Please use it as far as possible from your screen or at least the correct distance for illusion effect to work.

  1. https://ibb.co/qB7MK4N
  2. https://ibb.co/LkMQSV4
  3. https://ibb.co/1n7xgDN
  4. https://ibb.co/vxxZYZs
  5. https://ibb.co/S3Nzd1h
  6. https://ibb.co/HnH3Rmd
  7. https://ibb.co/5RqHfZj
  8. https://ibb.co/b1GWtR0

Browser screenshots may appear inaccurate depending on your resolution or dpi zoom larger than 100%.

Have fun! :desktop_computer::video_game:

3 Likes

Wow, really like your easymode halation settings. It’s definitely clean but without ruining the nostalgic look you’re going for.

By the way, what’s the pinball game you posted? Big fan of video game pinball and the pixel art in this one really shows off the shader!

Glad you like it. I started out trying to get that professional monitor rgb shader look from the analog shaders 3 pack but then the shader took a form of its own that I ended up liking more than the shader I was trying to recreate, I’m not sure if I can make it look any better than it currently is but I’ll probably try to tweak it again in the future. The name of the game is Kyuutenkai Fantastic Pinball available for both Playstation and Saturn (I’m a Saturn junky so I used that version). Another favorite of mine is Devil Crash for PC Engine along with it’s Megadrive port Devil Crash MD. Also if you’re into pc gaming also check out is Demon’s Tilt on Steam which seems to be a spiritual sequel to Devil Crash.

1 Like

I still don’t see anything that looks better than CRT-Aperture, IMO. Royale-Kurozumi is also very nice, but I haven’t played around with it much.

A lot of the mask effects seen in shaders don’t properly account for the LCD subpixel structure, so you wind up with some weird looking phosphors. People forget that the LCD itself has it’s own “mask” and you’re slapping a mask on top of that.

With CRT-Aperture I like to make the following changes:

  1. sharpness_edges and sharpness_image set to 1.00
  2. scanline_shape set to 1.00
  3. mask_strength set to 0.50
  4. brightness set to 1.00
  5. gamma input set to 2.4
  6. gamma output set to 2.2

Increase LCD backlight as desired.

Ideally, mask strength would be 100% but anything higher than 50% results in weird-looking inversion artifacts with TN panels.

1 Like

Wow, this looks so good that you could probably pass this off as an actual shot of a BVM. (“Which of these two images is a real BVM, and which is a shader”) Nice!

3 Likes

Interesting video to see. A black and white screen that uses liquid crystal color shutter. (Little off topic) :eyeglasses:

4 Likes

I’ve experimented with bezel reflection, and hacked on top of an example that Hunterk made on top of the crt Guest-Venom shader.

It looks like this:

The way it currently works is the reflection is added in the Guest-Venom shader, then the overlay is added overtop like a normal overlay. The reflection shows up because the bezel frame area is transparent and the corner highlights are semi transparent white. The shape/size of the bezel in the overlay needs to match the screen distortion to look right. The reflection shader adds a black border around the screen/tube area then the reflection disperses as it moves out. One other issue with the shader at the moment which needs to be fixed is that the existing guest Glow passes are used for the reflection (which I’ve set to be quite blurry), where really it should use its own Glow passes

Ideally it would be great to have the reflection be a separate shader on top of whatever the crt shader is. One of the snags is that the management of the integer scale multiple & distortion need to match between the crt shader and the reflection shader. It would also be great to have the bezel corner highlights be generated by the reflection shader instead of being part of the overlay, but this might not be worth it to try to do in the shader.

It’s still a work in progress, but if you’re interested I can post it.

9 Likes

Looks awesome! I’d love to see in motion.

This seems cool!

I’d be interested in seeing it.

That’s very clever and looks as real as it can get. Would love to test is as well, or see it in motion. Great work!

Here’s the shader, presets & overlays, the slang_shaders folder structure is in the zip

Some notes about using this,

To have proper integer scaling and also space for the bezel at top and bottom of the screen the integer scale is applied inside the shader. As a side note I actually really like this method of controlling aspect ratio, & integer scaling.

You need to set the video options to have integer scaling OFF, and aspect ratio to 16x9 or whatever your monitor is so the shader won’t get cut off.

The overlays were made for a 4K screen, so the integer scaling multiple is based on this. This means if you run a different resolution the overlay won’t fit right.

In the future it would be ideal to have an option to use a resolution independent mode which would use non-integer scale and have an overlay to match.

There are 2 sets of preset and overlay, one for horizontal and one for vertical. These match the common arcade resolutions for horizontal games (224px vertical) and vertical games (256px vertical)

You can use the shader with no overlay without a problem, here’s an image of that

8 Likes

This looks awesome, i had to play with the settings a bit to get it match my screen but it was worth it. Playing a colorful game like Kirby really makes this shader shine. Stunning.

I can’t show it off though since whenever i try to take a screenshot with this shader RA freezes.

Another issue I am having is with 240p content such as PSX. This shader doesn’t seem to work as well no matter what settings I try. Thought it might be due to my resolution (1600p).

EDIT: Remembered that print screen is a thing. Also i figured a setting that works for everything. I don’t know if it is my imagination but the scanlines look off for PSX.

EDIT 2: Added another image that better highlights the 240p problem. Inntergar scaling on/off doesn’t seem to help much. 256p on the other hand looks great.

3 Likes

Thanks for sharing it, however my machine is not able to work with slang shaders. So tough luck for me.

I added the vignetting to intentionally mask the corners, as I didn’t think the corner reflections would look natural. If you just get rid of those vignetting lines in the shader, it should open up the corners, as well.

The overlay on top looks really good, though. I could probably work it into the shader instead of loading it as a separate overlay, similar to the console-border shaders.

5 Likes

Hunter, if you end up messing with this shader and can find some time to port it to glsl, would be extremely grateful. If not, no worries :slight_smile:

1 Like

@HyperspaceMadness I haven’t ran the shader because slang, but I was checking out the code I noticed the moire mitigation. Did @hunterk add that or you? I can’t really remember what was in hunterk’s release. Also why is commented out? Just curious…

Also would love to see GLSL for this… But it’s ok lol.

@syh The moire mitigation was something I was trying but had commented out, it should be removed.

I should mention again that this is still wip and shouldn’t go into the repo or anything yet, also the fact that it’s bound to a (possibly out of date) copy of the guest-venom shader is an issue why it shouldn’t be distributed widely.

Another change I made to this was swapping in the better geometry deformation that someone posted and hunterk put into Ewa Curvature.

@hunterk, first, thanks a ton for all the work you’ve put into these shaders and communicating to the community about this stuff!!!

I do like the corner vignetting, because I agree with you that full brightness in the corners can easily look really weird. What I meant by corner highlights was that the static white corner highlights I have in the overlay are because they made it feel a bit more like there was a bezel there. Basically they are immitating some sort of lighting from the room. It would be cool to generate these in the shader because then you avoid having to have the overlay match exactly. I was unsure of how to do this because the way I was accessing the coordinates, they act really strange right at the corners

I like the idea of having the overlay in the shader and drawing the reflection on top additivey as this would remove the need for special transparency in the overlay. I attempted this but didn’t figure out the right way to put the texture in. As it is currently being a standard overlay allows it to be set a specific overlay per system, but maybe using separate slangp files for this would work just as well, and would be a good tradeoff for the benefit of having it in the shader.

If I wanted another glow pass to be used only for the reflection how would be best to do that? It seems that repeating the same Glow passes wouldn’t work since they would use the same parameter names.

1 Like

@Arviel

I’m assuming the issue you are having with the psx is that the bezel at the bottom is very small? If this is the case there are two ways to fix it.

One is to adjust the min Bezel Min Height to a larger amount, this will force the integer scaling to use a smaller multiple to allow for at least that min height of bezel, this is the most “correct” method

The second is to change Integer Scale Offset to a lower value, probably -1 would work. This adds to the integer scale multiple.

After this you can also change the Bezel Width and Bezel Height parameters to get a larger reflection area.

1 Like