Please show off what crt shaders can do!

“Old_n_Slotty_RF” or just “RF”

2 Likes

Great work @BendBombBoom! I can’t wait for this to be included in HSM Mega Bezel Reflection Shader!

I might take a look and see how it compares to some JVC D-Series pics to see how important the scanlines are and maybe play around to see if I can find a compromise that keeps the artifacts down.

I know you know your stuff but have you tried things like Scanline Gamma Offset or using the lightest scanlines and maybe Integer Scale Mode 1 or 2?

i looked up for the MBZ_1 folder 1080p optimized and CyberLab__Blending-And-Transparency__1080p__PVM-Edition__ADV preset. Wow i’m impressed by your work. The image feels so much more alive and bright. For a moment I thought that was playing Sonic Mania (2017) with how much more alive the pixels look like.

For some reason, this image doesn’t look as good as in RetroArch.

I looked into MBZ_3 folder but those presets are only optimized for 4K… I only have available one monitor at max 1600x900 resolution (900p) but I still couldn’t fix it completely through the options. Are there any plans to add up MBZ_2 optimized presets for 1080p or lower ? Really may have to take time in order to review and how to tweak those massive presets because they send me one place to another. It’s way too extensive compared to my little beginner level presets being done around.

I would like to check how can I change that simple TV screen on your presets and set the Sega_Genesis_Solid_A image from soqueroeu for now instead.

Really awesome work once again. I hope you can bring up any newer content around !

1 Like

I think we addressed this question a while ago.

I take it that you meant to say MBZ_3_Standard Full Reflections instead of MBZ_2 because there are 1080p_Optimized presets in the MBZ_2_Performance_No_Reflections folder.

I don’t have the resources to develop, fine tune and test presets which are optimized for every possible resolution but you should be able to use any preset on any resolution screen. I’ve found that my 1080p_Optimized presets look great even on a 1366 x 768 screen! I think it’s 1080p_Optimized I tried but it could also have easily been 4K_Optimized as it was a little while ago.

All you have to do is play around with the Mask Type, Size and Layout settings until you get something that looks good enough for you.

For presets like @Soqueroeu -TV Backgrounds, you might also have to mess with scaling settings and stuff to get things to fit or just use Integer Scale Mode 0 and have everything fit automatically but with the chance of more moire artifacts, which is something that you seemed to find desireable if I recall correctly.

In the near future it’s going to be a lot simpler to integrate CRT Shader focused presets with Bezel/Overlay/Background graphics focused presets though so stay tuned!

Are they really massive? They don’t call them Simple Presets for nothing! Lol.

You really don’t need to mess with the preset chains nor edit the preset files manually you know. It might be easier to just load which preset you want, then adjust which settings you want to from within the Shader Parameters Menu, then just save your final settings.

You can turn off Use Simple Presets before saving if you want the presets to be saved as Full Presets instead of nice, linked, simple preset chains.

Perhaps someone can correct me if I’m wrong about this.

When I made examples of my presets being integrated with @Soqueroeu -TV Backgrounds I loaded a Soqueroeu-TV Backgrounds preset and manually entered the Shader Parameters that I wanted and saved it as a new preset. I might have used existing values or I might have started from scratch but it’s not really difficult to record the values from one preset and manually enter them into a new preset.

The easiest way for you to do this might be to use the template I already made for 900p as a starting point and just change the filename in the reference line to match the Sega_Genesis_Solid_A preset that you would like to use.

@Soqueroeu -TV uses MBZ_3_STD base presets so not all of the features like MDAPT which is what is used in my Blending and Transparency preset will be available.

For my @Soqueroeu -TV Backgrounds presets, I recommend using my Custom Blargg NTSC Filter presets to perform de-dithering but you can probably figure out a way to integrate your special Rainbow Effect shader preset as well or instead.

This is due to the mask and scanlines settings. To view properly you need to view Fullscreen or zoom in until things look right.

Thanks, I appreciate the positive feedback!

1 Like

Using Guest Venom’s “Internal Resolution Y” you can force a scanline count that works with a slot mask but it messes with the resolution. It’s up to you if you find that bothersome or not:

shaders = "17"
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"
frame_count_mod4 = "2"
mipmap_input4 = "false"
alias4 = ""
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 = "false"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = ""
float_framebuffer5 = "false"
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/custom-fast-sharpen.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = "NtscPass"
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/convert-ntsc.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = ""
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "0.500000"
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/gaussian_horizontal.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = ""
float_framebuffer11 = "true"
srgb_framebuffer11 = "false"
scale_type_x11 = "absolute"
scale_x11 = "640"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = "GlowPass"
float_framebuffer12 = "true"
srgb_framebuffer12 = "false"
scale_type_x12 = "absolute"
scale_x12 = "640"
scale_type_y12 = "absolute"
scale_y12 = "480"
shader13 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
alias13 = ""
float_framebuffer13 = "true"
srgb_framebuffer13 = "false"
scale_type_x13 = "absolute"
scale_x13 = "640"
scale_type_y13 = "absolute"
scale_y13 = "480"
shader14 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = "BloomPass"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "absolute"
scale_x14 = "640"
scale_type_y14 = "absolute"
scale_y14 = "480"
shader15 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = ""
float_framebuffer15 = "false"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "1.000000"
scale_type_y15 = "viewport"
scale_y15 = "1.000000"
shader16 = "shaders_slang/crt/shaders/guest/advanced/deconvergence.slang"
filter_linear16 = "true"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
alias16 = ""
float_framebuffer16 = "false"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
AS = "0.400000"
CP = "-1.000000"
wp_saturation = "1.250000"
quality = "-1.000000"
cust_fringing = "1.200000"
cust_artifacting = "2.000000"
SHARPEN = "1.200000"
CONTR = "0.250000"
intres = "1.500000"
SIGMA_HB = "0.250000"
SIGMA_VB = "0.250000"
glow = "0.000000"
bloom = "0.200000"
halation = "0.100000"
brightboost = "0.600000"
brightboost1 = "1.300000"
gsl = "-1.000000"
scanline2 = "20.000000"
beam_min = "1.700000"
beam_max = "1.200000"
vertmask = "-0.500000"
rolling_scan = "0.050000"
h_sharp = "15.000000"
s_sharp = "1.500000"
csize = "0.100000"
bsize1 = "0.999999"
sborder = "0.250000"
barspeed = "200.000000"
barintensity = "-0.020000"
shadowMask = "6.000000"
maskstr = "0.950000"
masksize = "2.000000"
maskDark = "0.900000"
slotmask = "0.950000"
slotmask1 = "0.950000"
slotwidth = "3.000000"
double_slot = "2.000000"
slotms = "2.000000"
mclip = "0.900000"
dctypex = "0.400000"
dctypey = "0.750000"
deconrr = "-7.000000"
deconrb = "7.000000"
deconrry = "5.000000"
deconrby = "-5.000000"
addnoised = "0.260000"
noisetype = "1.000000"
post_br = "1.250000"
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"
2 Likes

Here we go another shader update. First major change about this pack is that I finally managed to get the RF cable look down with rainbow banding effects for my 8/16 bit presets but mainly for the Genesis/Megadrive system. As you all know that system produced some dithering/transparency effects on the television with that cable hooked up that produced a rainbow such as the infamous Sonic waterfall and I managed to blend that look into guest’s shader perfectly:

For my “arcade” presets previously I always use to set the NTSC Phase setting to 3 phase, I changed that to Auto so now it’ll choose the correct ntsc phase to use for whichever system you load up automatically (cps2 games look as they’re suppose to now in ntsc phase 2).

https://www.mediafire.com/file/0njadc4tnbl8xb1/crt-guest-advanced-ntsc-slotmask+presets+05-23-2022.zip/file

All 8/16 bit game pics were taken with NTSC Signal Mode in the parameters turned off. Now you can switch between the RF cable look or a crispy clean sharp look on the fly simply by going into parameters and turning off/on the very first setting.

You must have guest’s latest shader for my presets to display properly which you can find here.

@HyperspaceMadness you already know lol. I think I’m satisfied with how these came out, I managed to cover all the bases that I wanted with these presets and I hope you all like them as well.

Edit: As of 5/23 I have updated my 8/16 bit shaders. There was excessive jittering going on and I managed to not only reduce it but also sharpen up the overall picture a little more in the process. That juicy rainbow banding now looks better than ever.

6 Likes

Can you increase sharpness to compensate somewhat for the resolution loss?

I wouldn’t want to lower the scanline count to anything less than an accurate number of scanlines based on the resolution of the image though.

But that Slot_Mask looks good in the screenshots. I had the idea to use less than integer values for the Slot Mask Size to fine tune it as you have done but I guess that’s a bit low on my priority list.

I really like that I can see the RGB "phosphor” triads clearly and cleanly. I haven’t been seeing that level of mask detail in most shader preset screenshot posts which use slot masks.

Made a quick edit and put up a new link so if you just grabbed the pack earlier please grab it again

1 Like

I really like your filters because I did own a few TVs which your presets remind me of. However, IMO it makes little sense to have an NTSC arcade filter. Just my 2 cents.

For the record some of my best memories were of me playing on a crappy 27" Zenith. (God bless my dad, he did what he could on a working man’s salary).

2 Likes

Hey thank you and I’m glad you enjoy my shaders and that it reminds you of the golden years. As for using NTSC I’ll show you an example of why it’s absolutely needed for arcade as well as the systems. Here’s Street Fighter Alpha 2 for example. I loaded up guest’s vanilla advanced shader without ntsc, take a look at the character portrait backgrounds:

the dithering isn’t blended in properly.

Now here’s the same screen with NTSC added in from my shader preset:

The character portrait backgrounds look as they’re suppose to now. I was making a mistake not blending those dithering effects in properly in pretty much all my past shader packs, that problem is eliminated going forward now.

3 Likes

Yeah, I can see the benefits it’s just the fact that these games were never available this way unless you played them on Sega Saturn, PS1, etc. In another thread I mentioned how you can achieve these results with different masks. Here is an example I think you will be interested in.

It’s Guests’ RRGGBBx mask. It allows for transparency in SFZ3/A3. Personally it’s a white whale so I am really happy to find it works for it.

It’s easy to use a different mask and see how most of them do not create the transparency the arcade machines allowed. Anyway, I think you will find this interesting. It is mask 13

3 Likes

Yeah sorry my bad boss. Yesterday got a messy writting. I meant MBZ_3 folder which only have optimized presets for 4K.

I really love you take the care to make proper long explanations. Really appreciate you do it bud.

Thanks for reminding me the 1600x900 solution. Sorry for my bad memory.

Your whole project is a massive thing to take the time to read about. It definetely has several more tweaking capabilities but it’s not a thing I can understand so shortly.

Your presets along with Mega bezel project are things that push my GTX 1050 mini 2GB and i5-2400 CPU (2011) to almost it’s max capabilities.

In the near future it’s going to be a lot simpler to integrate CRT Shader focused presets with Bezel/Overlay/Background graphics focused presets though so stay tuned!

This is so nice to know it bud. Really appreciate so much your work into your project alongside the Mega bezel + soqueroeu features.

2 Likes

Somes with Guest filter, arcade like.

For 1080p, for see good the screenshots more or less as me im watching, backlight in high and contrast, low brightness in the monitor/TV, color a bit more that midle, TV LCD need to in game mode, sharpening at low if TV, i dint know in oled or 4K. Real curvature/ distortion is applied and humbar, these dynamics, a flikkering mode for complete will be really good for feel more as a arcade screen CRT, vigneting applied too and bloom or the other not because some strange ireal alo apear as a texture when i apply, some other thigs.

As these arcade screens with good contract and color, very good in movement i like but good, mask present.

a greeting.

6 Likes

Nothing new here, just a few tweaks to the STD Mega Bezel Shader:

6 Likes

When I say “resolution” I meant the scanline count is inaccurate. I’m not sure how the math works out for a slot mask to match up to scanlines but maybe it’s something @guest.r would know more about. Thus far my experience is you either have accurate scanlines and a messed up slot mask, or an accurate slot mask with messed up scanlines.

4 Likes

My thought is to get it to match up you’d need to be using integer scale, then make sure the integer multiple matches how many pixels tall the mask pattern is. So that’s a lot of constraints, so a bit difficult to manage.

In the Mega Bezel you could use the fake scanlines and adjust the count to get the just right size to match the mask, but that still feels like it would not be that robust, and of course you end up with a mismatch with the original content res, which may or may not look bad.

3 Likes

Integer scale wasn’t working out for me when using the slot mask. I’ll give it another try and post screenshots in the Guest Venom thread.

3 Likes

It’s been years since I played any Capcom arcade titles on an arcade monitor but are you saying dithering wasn’t displayed properly back in the 90’s at the arcades and that it was only displayed properly on home ports? That doesn’t make sense to me. I’ll also give that mask a look, if I remember correctly it’s the same as mask 10 but for 4k displays

1 Like

Yes RGB connection doesn’t blend pixels like that.

Watch the video (4:25 & 4:44) Street Fighter Alpha 2 - Arcade Cabinet Game Review - Capcom 1996 - YouTube

3 Likes

Actually arcade monitors had RGB connection, for proper “emulation” I use guest’s vanilla. But I think there should be a sort of middle way, as obviously there’s a difference between LCD, LED and CRT. For example, I think maybe also the incandescence of the phosphors produced some kind of dithering, but I may be wrong.

2 Likes