A new little shader i did (glsl)

It’s already on SLANG as “crt-consumer-1w-ntsc” (if you mean that).

Well i learned a lot in the last 2-3 years by studying established shaders like Guest.r / crt-geom / blargg’s filter, reading about ntsc, creating my own excel documents to convert srgb->smpte (reading hell of a lot before how it’s done) etc, then writing my own shaders, pushing things more and more squeezing the last ounce out of it lol. I always aim shader to be ready to load and play without much tweaking and include the things i consider they should be there to recreate the nostalgia look. Having original hardware and a CRT helps too.

All in all it’s a great hobby and has been a blast.

I am burning some hours in this game lately heh

8 Likes

Yeah, that’s exactly what I meant. You could maybe name it something more… personal? to reflect your journey towards creating it. Just a suggestion :slight_smile: since its current name is fine of course but a tad generic.

And yes, the best thing about these shaders (besides exploring the rabbit hole of endless tweaking and experimentation) is that old games can be made to look so pretty that playing them like this is way, way more enjoyable. I don’t think one can actually appreciate retro graphics without a good crt or a nice shader setup. And in most cases, that applies to modern games that use pixel graphics too. They look a thousand times better with scanlines, mask, halation, etc

2 Likes

They will always look better on CRT or a shader, because they drop the digital square pixel shape and replace it with analogue look rounded one (light is round not square, and phosphors emit light), then projecting 240p on a 480p panel (which is what a CRT does) makes it look like higher resolution (pixels are smaller than raw squares). Add some extra analogue imperfections that actually help it look better like color bleed etc.

2 Likes

just look at that beautiful 90s experience thanks to @DariusG

An unexperienced guy would have no idea if this is real console or not

This is why I’ve had my doubts about these guys that talk so many wonders about expensive hardware like MiSTer FPGA

Who need hardware when you got real geniuses like DariusG ? This is the type of content makes me believe since more than a half decade already that RetroArch is the ultimate Retro experience.

Thank you so much !

5 Likes

Really great work. I had made an account and I guess it disappeared since I hadn’t posted anything and just left likes. Thank you for making this ntsc shader + consumer crt shader.

I have only tweaked it a little and just with NES, and really seems like what my TV back in the day looked like!

2 Likes

Yep, and don’t forget the lovely pointillistic effect that the mask provides. Man I need augmented reality CRT glasses…

(and btw, BoF 2 is awesome, as is 3!)

2 Likes

Not sure if this is intended or not but this is a little difference I found in Rainbow effect.

Is there some way to get a similar effect on pipes like its does for crt guest ntsc preset ?

First image is your preset, and second is from CRT guest.

Guest’s version is something I’ve truly seen way more times in real console recordings from Youtube and my own experience as well.

Thank you again.

1 Like

Depends if you want to recreate a messy composite. Perhaps lower comb filter strength and reduce chroma resolution even more?

e.g. here is same game, on same TV on composite on Sega CDX (almost invisible rainbow) and Genesis model 1 which had the worst composite available at the time. It’s not they wanted it to be there, it was a side effect of using a cheap/junk composite encoder, probably leaving tons of cross talk between Y and C or even (most definitely) in-between C.

3 Likes

Added a PAL switch for those old ZX Spectrum games heh, some Stella specific Atari 2600 frequencies too.

While FUSE outputs a 320 resolution, that’s not accurate as Spectrum would output like 352 with borders, and active 256, strange the artifacts only appear properly on PAL and PCE256 (same clock with SNES256) mode (seems active pixels is the defining factor). All frequencies are adjusted for PAL 4.43Mhz while PAL=On.

4 Likes

Try this heavier version that uses a real time FIR in the likes of “ntsc-adaptive” (but not precalculated). Tell me what you think. Probably more what you are after

Press CTRL-SHIFT-S to download it and use it before some CRT shader

9 Likes

Simply, PERFECT. Thank you, buddy.

Thanks to you, Guest and all geniuses around. You simply make miracles to happen.

6 Likes

Greetings @DariusG, I just wanted to share my gratitude and appreciation for your work after taking 3 of your new shaders for a spin.

I have a few questions and comments but I can’t get into them now.

The things I’m wondering about the most are the different PCE clocks. How is a user supposed to know which one is the correct one to use in any given situation? Can this parameter choice be automated?

Also can the settings be internally normalized so as to provide consistent settings (blending, chroma artifacts and sharpnes) if a game is switching modes on the fly for example?

2 Likes

Sure it can, just need to set a switch as “PCE mode” then internally

pcemode==1.0? OriginalSize.x < 300.0 ? PCE256 : PCE320;

320 should be ntsc x 2 while 256 should be SNES clock. MD320 should be ntsc x 15/8.

The difference of PCE is it does (afaik, and most other systems do the same)

227,5 (180’ steps per line, ntsc default, dot repeats pattern ever 2 lines)

instead of 227,333 of SNES (120’ steps per line, diagonal, dot repeats pattern every 3 lines).

//clock 
//MD/MS256/PCE256 & SNES/NES256  ntsc x 1.5 
//MD320 ntsc x 15/8
//PCE320 ntsc x 2
//ATARI 2600 ntsc, but stella outputs 320 so same with PCE 320


pixPos = floor(vTexCoord.x*SourceSize.x)*PI*2.0*ntsc/clock

//all use 2 phase 227,5 except SNES/NES 3 phase (120') 
   line = mod(floor(vTexCoord.y*SourceSize.y),2.0)*PI*2.0  // 2 phase
   line = mod(floor(vTexCoord.y*SourceSize.y),3.0)*PI*2.0  // 3 phase

  vec2 burst = vec2(cos(pixPos + line), sin(pixPos+line);

These people that designed this ntsc color transfer were absolute genius, not appreciated as they should imo

3 Likes
3 Likes

Crt_consumer has a slang version? I thought it was glsl-only, damn. That means I can put it through its paces properly :smiley:

1 Like

Thanks for your amazing work.

Are there updates for crt-consumer-1w-ntsc glslp ?

2 Likes

I thought to leave it as it is, simpler and faster. Of course the newer version is better, perhaps if there is demand i’ll port the new version to GLSL too.

2 Likes

You are the best .

I hope update glsl version if you want any time

1 Like

Yes, there is demand for continuous development and improvement for CRT-Consumer-1w-NTSC-XL.

2 Likes

Here is another composite secret on these 2 screenshots.

Raw rgb, dithering is pretty clear and obvious

A gray scale representation, look how dithering is almost gone invisible, how close dithered pixels are. Not by luck, that’s the artist’s brilliance there. This is our luma representation in a composite signal. Add some bluriness to this due to luma filters, add the colors of chroma on top, that is more like drawing with a crayon or something due to low bandwidth and you got dithering blend.

In conclusion, when Luma dithered pixels difference is large it won’t be able to blend. When in S-Video the signal evades some Composite Luma filters as it is clean already so it stays sharper, not blending that easily as in composite.

3 Likes