New CRT shader from Guest + CRT Guest Advanced updates

This is a preset for Sega Genesis, I did some tests with ntsc coloring/rainbow at 2.00 and some sharpness values ​​pushed to max.

shaders = "18"
shader0 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "StockPass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders_slang/crt/shaders/guest/advanced/afterglow0.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "AfterglowPass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders_slang/crt/shaders/guest/advanced/pre-shaders-afterglow.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "PrePass0"
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass1.slang"
filter_linear4 = "false"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "NPass1"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "4.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = ""
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass3.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/advanced/custom-fast-sharpen.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "NtscPass"
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "true"
alias8 = "PrePass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders_slang/crt/shaders/guest/advanced/avg-lum-ntsc.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "true"
alias9 = "AvgLumPass"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "shaders_slang/crt/shaders/guest/advanced/linearize-ntsc.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = "LinearizePass"
float_framebuffer10 = "true"
srgb_framebuffer10 = "false"
scale_type_x10 = "source"
scale_x10 = "1.000000"
scale_type_y10 = "source"
scale_y10 = "1.000000"
shader11 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc-pass1.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = "Pass1"
float_framebuffer11 = "true"
srgb_framebuffer11 = "false"
scale_type_x11 = "viewport"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders_slang/crt/shaders/guest/hd/gaussian_horizontal.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = ""
float_framebuffer12 = "true"
srgb_framebuffer12 = "false"
scale_type_x12 = "absolute"
scale_x12 = "800"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
alias13 = "GlowPass"
float_framebuffer13 = "true"
srgb_framebuffer13 = "false"
scale_type_x13 = "absolute"
scale_x13 = "800"
scale_type_y13 = "absolute"
scale_y13 = "600"
shader14 = "shaders_slang/crt/shaders/guest/hd/bloom_horizontal.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = ""
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "absolute"
scale_x14 = "800"
scale_type_y14 = "absolute"
scale_y14 = "600"
shader15 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "BloomPass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "absolute"
scale_x15 = "800"
scale_type_y15 = "absolute"
scale_y15 = "600"
shader16 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc-pass2.slang"
filter_linear16 = "true"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
alias16 = ""
float_framebuffer16 = "true"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
shader17 = "shaders_slang/crt/shaders/guest/advanced/deconvergence-ntsc.slang"
filter_linear17 = "true"
wrap_mode17 = "clamp_to_border"
mipmap_input17 = "false"
alias17 = ""
float_framebuffer17 = "false"
srgb_framebuffer17 = "false"
scale_type_x17 = "viewport"
scale_x17 = "1.000000"
scale_type_y17 = "viewport"
scale_y17 = "1.000000"
AS = "0.000000"
internal_res = "5.100000"
cust_artifacting = "0.000000"
cust_fringing = "0.000000"
ntsc_fields = "1.000000"
ntsc_phase = "3.000000"
ntsc_scale = "0.750000"
ntsc_rainbow1 = "2.000000"
ntsc_taps = "8.000000"
ntsc_cscale1 = "2.250000"
ntsc_ring = "0.000000"
ntsc_sharp = "-10.000000"
ntsc_shape = "0.500000"
ntsc_charp = "10.000000"
CSHARPEN = "5.000000"
CCONTR = "0.000000"
GAMMA_INPUT = "2.500000"
gamma_out = "2.200000"
interm = "0.000000"
HSHARPNESS = "1.000000"
SIGMA_HOR = "0.100000"
S_SHARP = "0.000000"
HSHARP = "0.000000"
MAXS = "0.000000"
HARNG = "0.000000"
spike = "0.000000"
m_glow = "1.000000"
m_glow_cutoff = "0.000000"
m_glow_low = "0.500000"
m_glow_high = "7.000000"
m_glow_dist = "4.000000"
m_glow_mask = "0.000000"
SIGMA_H = "1.400000"
SIGMA_V = "1.050000"
SIZEHB = "1.000000"
SIGMA_HB = "0.250000"
SIZEVB = "1.000000"
SIGMA_VB = "0.250000"
halation = "0.626000"
hmask1 = "0.000000"
brightboost = "1.000000"
brightboost1 = "1.000000"
scanline1 = "40.000000"
scanline2 = "70.000000"
beam_min = "0.250000"
beam_max = "0.600000"
beam_size = "0.000000"
scans = "0.000000"
scan_falloff = "0.100000"
scangamma = "1.500000"
shadowMask = "6.000000"
maskstr = "1.000000"
mcut = "2.000000"
mask_zoom = "3.000000"
mzoom_sh = "1.000000"
maskDark = "0.000000"
maskLight = "1.000000"
mask_gamma = "1.000000"
slotmask = "1.000000"
slotmask1 = "1.000000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/advanced/lut/trinitron-lut.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/advanced/lut/inv-trinitron-lut.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/advanced/lut/nec-lut.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/advanced/lut/ntsc-lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"
3 Likes

I love how you just randomly pop up and shower us with a little magic every now and then lol. Did you grab guest.r’s latest shader update? There’s a brand new setting called “edge colors” that you need to take a tweak at. I’ll just let you see for yourself what I’m talking about, it’s an amazing new setting for the ntsc shader.

2 Likes

Some checkerboards seem not to fully blend even with default ntsc settings, it’s more pronounced with cranking up the chroma and luma sharpness settings. It’s one of these color vs. black checkerboard situations.

I noticed it also in Streets of Rage 2 bar scene with the checkerboard under the lights. But most of my test cases work satisfactory.

One of possible solutions is also to increae the Internal Resolution setting by a notch, but probably this is only a situational solution, working against the majority of different situations.

@ProfessorBraun:

Very nice colors and mask mitigation! It’s one of these situations where 4k really makes a difference.

Maybe you can achieve some better results with negative adaptive sharpness,

2 Likes

I see. In that case I will go forward looking at that as something that’s just suppose to be that way. I thought at first maybe it was a bug but your response says otherwise.

Oh yeah? To me the SOR2 bar lights look perfect:

I don’t notice any kind of weirdness with blended dithering there unless my eyes are fooling me. Even with the rainbows it looks good to me:

I guess since you mentioned above that things are meant to look that way I’ll just leave everything as is.

I love that new edge color setting you added in so much you have no idea. I can never go back to the way things were pre that setting, it changed my composite presets forever. I wonder what else is in store for the “guest-advanced” shader going forward, guess time will tell.

3 Likes

Yes, I’ve done some quick testing with this setting, but not in depth yet. :wrench:

Thanks ! Yeah, higher resolution helps a lot.

It’s already negative :yum:, I will show the differences between negative and positive values.

Edit:

3 Likes

You got to try it with vanilla settings and an eagle eye! :wink: But in the end this situation you are mentioning is neiter a feature, not a bug. Really can’t do much here without making the filter blurrier in general. Blue is also known for it’s very low luma values, combine it with black (zero) luma and stress the filter to max., it’s an oddity it can occour.

1 Like

Ah ok, yeah I’ve never tried it with vanilla settings.

No no no don’t you change that setting and blur it up, I like her just the way she is lol. I’m good with what it offers oddities and all. That situation I mentioned is so small that the pros outweighs anything else at this point. Composite Shadow Mask on Mega Drive games look so so vibrant and clean now:

Definitely taking this new look into the new year and into the future with that edge colors setting maxed out full speed ahead.

2 Likes

Hmmm…there is one more thing. You could disable gpu screenshots temporarily and post this image, maybe it’s worth to take a look, nevertheless:

Original resolution sources are pretty cool for testing…

1 Like

Hi @Guest.r - first of all thanks for your work with your shaders - I kindly needed some advice from you, who are the creator. I wanted to try to get a decent SlotMask on my 1080p monitor (even if I know that it is difficult to get it with this resolution). I made many attempts playing with the “Slot Mask strength bright/dark pixel” command and with “Mitigate SlotMask interaction” also taking inspiration from some works done by artists in the community. But if I wanted to create something without touching too much with the settings (the default ones with the 0 mask are the best I found for my screen) and if I wanted to create something very realistic (I would not like to use Lottes because its SlotMask although good does not exist in any CRT monitor) and maintain a high TVL (with the basic plug and play settings I have a TVL of about 520), although strongly conditioned by my resolution, what and with which values ​​do you recommend I act without touching too much the various values? In particular, do you know of any values to enter that I can consider good? Thank you so much for your help.

1 Like

You can get nice slotmask effect with hight TVL 1080p mask 0 or mask 5. But i also suggest to try mask 9. It’s better if you lower the slotmask height by 1.0. I remember having some really nice slotmask presets with my 1080p display.

Next you can use scanline mode -1.0 and integer scaling (shader has this option) with overscale.

Mask strengths are a personal preference, i can’t really help here at this point.

If you want to increase slotmask height to 2.0 at 1080p then i advise no-scanline mode for best results.

Edit: oops, when mentioning “width” i actually meant “height”, my bad.

2 Likes

Thank you very much, you are very kind - I will do some tests and share them to kindly have your authoritative opinion - thank you very much

Update:

I opted for mask 0, increased the SlotMask values to 1 for the “dark” and “bright” entries, activated the “SlotMask in bright scanline” but did not change the width to 1, leaving it in “auto” mode because I had the feeling that it had no effect and I did not like the result. I am aware of your advice and I did all the tests to apply it, even using mask 9 or using the mode without scanline, but this seemed to me to be the best result. Very honestly, what do you think? Should the image be considered wrong? @Guest.r

1 Like

Like this?

Trouble Shooter (USA)-241220-074306

This shot was taken with the “gpu screenshot” setting turned off.

1 Like

New Release Version (2024-12-20-r1):

Notable changes:

  • Old: new functionality added with NTSC shaders to better preserve ‘edge’ colors.
  • New: fine-tuning of the new functionality for some specific cases.

Download link:

https://mega.nz/file/kkBGFQgb#wsoBqy8dE29893pc6MCHuR-GKDoHbQclfjAQ34ppiMQ

9 Likes

Well damn that was fast lol. I think you already know the first game I’m about to test with this. I’ll be back with my results soon.

1 Like

I’m sorry, @ROBMARK85, i accidentally mentioned “slotmask width” when i meant “slotmask height”. Width is best on auto indeed.

With bezel and 1080p you are best with height 1.0, maybe 2.0 with no-scanline mode, you can also re-read the above post for more info.

But it’s definitelly paying of to do some tweaking once you got the base masks working.

Well damn that was fast lol. I think you already know the first game I’m about to test with this. I’ll be back with my results soon.

Yes, some more testing is good, the “hack” is pretty close on this situation, hopefully it works in general on similar cases.

4 Likes

And BOOM just like that the issue is gone:

You came through once again with your legendary wizardry, that small area that looked slightly de-dithered is now fully blended like all the other blue sky layers. I don’t know how you keep improving this shader but I’m gonna be on the front lines for this ride as one of the ambassadors for this shader until the end of time, thank you man.

I will test things out with other games throughout the day and report back if anything comes up, in the meantime I’ll go ahead and swap out the previous link for your new shader update in my thread.

Edit:

Another test. Previously on the last update I also noticed the blood in the background for Streets of Rage 3 at the title select screen was also slightly de-dithered but didn’t speak on it, this new update fixed that as well. It’s now also fully blended again:

I can’t believe I’m at a point where I can achieve a crisp composite image and still get the benefits of full blended dithering, this has been a dream of mines since I first discovered the guest ntsc shader. I think this update should be pushed upstream soon.

4 Likes

No problem, in fact thank you very much for your kindness and availability. As soon as I get home I will do other tests with the correction you gave me. Thank you very much.

Update: in the “experimental” folder inside the “Mega_Bezel” presets there are several examples of your Slot Masks (they are in fact called Guest Slot Masks) which together with other effects are masterpieces! The first two screens are related to the second Slot Mask (I only removed the reference to an overlay to leave it empty) and the third screen refers to the third Slot Mask. Found by chance and are a fantastic surprise, there is also a nice example of a modified Aperture Grill. A lot of stuff! @Guest.r

PS. Since Mega Bezel relies heavily on your work, I hope that in the future we could have plug and play presets not only with Aperture Grill but also with Slot Mask, maybe with various variations. I’m fantasizing and I understand that it’s difficult to manage over time being updated, but it would be majestic to see the results of the presets inside the experimental folder.

2 Likes

Hey @ROBMARK85! I’m glad you found these presets fine-working with 1080p resolutions. There are some very nice guest-advanced presets of all three mask types out there, also honoring 1080p. Maybe you can try them out, porting (copy/paste parameter values) to mega bezel is not this hard. NTSC shaders work a bit different with mega bezel, so there maybe isn’t an 1:1 conversion on the table, but should look similar nevertheless.

3 Likes

Thanks @Guest.r - I don’t know when they were created (the GitHub related to the Mega Bezel reports the words “over a year”) and they also use some “external components” (like the Duimon glass effect) without which they wouldn’t have the same effect, but I’m sure since I opened the file with notepad that they refer to the “GDV_ADV” presets. The settings I saw are easily transportable with some small changes to the reference coordinates on a new preset that has the “GDV_ADV” as a reference. They shouldn’t have had major changes in the final result compared to their creation looking at the updates that have been made by your Gest_ADV. To date I don’t know if and when there will be updates for the Mega Bezel, but it would be nice for the future to have various variants like these as an alternative to the basic presets, maybe to be put in a special folder. Unfortunately I try to study and modify things manually but I can’t get the fantastic results that you artists get. Thank you very much always for your work and for your help.

1 Like

Hey there, amazing job as always with this project.

I’ve been recently trying to achieve this real hardware, Sega Genesis recording. It seem to look almost the same except for the mountain colors. I just can’t get the same or very similar type of green colors.

Do you have any idea how to get the right color image please ? @sonkun maybe you know bud, you’re also an experienced guy.

I dont know if this an issue with the Genesis cores or can be achieved through RA.

The mountains seem to have a yellowish type of colors but cant just get it right. And this type of colors are present on the overall Composite video recordings I’ve found for many years, even the experience I used to have.

1st image is real hardware

2nd is BlastEm core

preset thus far:

#reference "crt-guest-advanced-ntsc.slangp"
TNTC = "4.000000"
sega_fix = "1.000000"
internal_res = "2.999999"
cust_artifacting = "1.000000"
ntsc_rainbow1 = "1.000000"
GAMMA_INPUT = "1.800000"
gamma_out = "2.400000"
m_glow = "1.000000"
4 Likes