Rainbow banding with composite video - Presets for Sega Genesis Games

i used tvout-tweaks or GTU050 if you ever wanted to decrease or increase intensity for rainbow, just like the original console is. Since it’s not that visible over there, I think would just help even further with accuracy. If not using that option, you can still tweak it with NTSC scale and saturation.

2 Likes

Post up your settings if you don’t mind. I imagine you made it look special

1 Like

Lol, I’m far away from special but only did this:

ntsc_scale = “0.680000” ntsc_sat = “0.850000”

hope you enjoy the effect and thank you for your contributions a lot :slight_smile:

5 Likes

just little further testings with less color saturation and more dithering:

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/mame_hlsl/shaders/old/shaders/mame_hlsl/shaders/mame_ntsc.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/grade/pre-shaders-afterglow-grade.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 = "true"
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/stock.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/dithering/shaders/jinc2-dedither.slang"
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 = "true"
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-ntsc.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"
ntscsignal = "1.000000"
avalue = "0.000000"
bvalue = "0.000000"
ccvalue = "5.008423"
scantime = "37.000237"
g_crtgamut = "1.000000"
g_hue_degrees = "9.000000"
g_I_SHIFT = "0.030000"
g_I_MUL = "1.100000"
g_lum_fix = "1.000000"
g_vignette = "0.000000"
g_cntrst = "0.400000"
ntsc_scale = "0.680000"
ntsc_sat = "0.800000"
ntsc_sharp = "-0.400000"
blendMode = "2.000000"
JINC_SHARP = "2.000000"
SIGMA_VB = "0.750000"
bloom = "-0.700000"
halation = "0.100000"
gamma_c = "1.360000"
brightboost = "1.300000"
brightboost1 = "1.250000"
gsl = "-1.000000"
h_sharp = "1.100001"
s_sharp = "1.500000"
ring = "0.100000"
warpX = "0.050000"
warpY = "0.070000"
csize = "0.080000"
bsize1 = "0.300000"
shadowMask = "9.000000"
maskstr = "1.000000"
slotmask = "1.000000"
slotmask1 = "1.000000"
slotwidth = "4.000000"
double_slot = "2.000000"
mclip = "0.350000"
gamma_out = "2.000000"
deconrry = "1.250000"
deconrby = "-1.250000"
decons = "1.400000"
addnoised = "0.340000"
noiseresd = "4.000000"
noisetype = "1.000000"
post_br = "1.100000"
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"

this is for Borders set to FULL in genesis plus gx core

5 Likes

That’s nice, it has such a retro vibe to it with the borders set to full. Good stuff

2 Likes

There have been sometime but this new version may have an even a bit more accurate Rainbow banding. Both presets are thanks to @sonkun that kindly shared his last presets update in late July, 2022: Please show off what crt shaders can do! - RetroArch Additions / Shaders - Libretro Forums

Also worth to mention, I attempted to do some closer emulation to composite video from this video sample on Sonic 2: Sonic the Hedgehog Debug Mode, Level Select Sega Genesis VHS Footage - YouTube

Sonic 2 VHS footage video vs recent new version:

Including my own filthering and CRT effects, thanks to @guest.r and his very awesome big shaders project.

07 - ModDanny v2.201 (FullBorders) - This one is intended for Genesis Plus GX with Borders set to FULL in options OR BlastEm core.

shaders = "19"
shader0 = "shaders_slang/crt/shaders/tvout-tweaks.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
shader1 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
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/mame_hlsl/shaders/old/shaders/mame_hlsl/shaders/mame_ntsc.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "StockPass"
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/afterglow0.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "AfterglowPass"
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/grade/pre-shaders-afterglow-grade.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "PrePass0"
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass1.slang"
filter_linear5 = "false"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "NPass1"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "4.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "0.500000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass3.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 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/crt/shaders/guest/advanced/custom-fast-sharpen.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = "NtscPass"
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/stock.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "true"
alias9 = "PrePass"
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/avg-lum-ntsc.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "true"
alias10 = "AvgLumPass"
float_framebuffer10 = "false"
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/linearize-ntsc.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = "LinearizePass"
float_framebuffer11 = "true"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc-pass1.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = "Pass1"
float_framebuffer12 = "true"
srgb_framebuffer12 = "false"
scale_type_x12 = "viewport"
scale_x12 = "1.000000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders_slang/crt/shaders/guest/advanced/gaussian_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 = "source"
scale_y13 = "1.000000"
shader14 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = "GlowPass"
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/bloom_horizontal.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = ""
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "absolute"
scale_x15 = "640"
scale_type_y15 = "absolute"
scale_y15 = "480"
shader16 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear16 = "true"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
alias16 = "BloomPass"
float_framebuffer16 = "true"
srgb_framebuffer16 = "false"
scale_type_x16 = "absolute"
scale_x16 = "640"
scale_type_y16 = "absolute"
scale_y16 = "480"
shader17 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc-pass2.slang"
filter_linear17 = "true"
wrap_mode17 = "clamp_to_border"
mipmap_input17 = "false"
alias17 = ""
float_framebuffer17 = "true"
srgb_framebuffer17 = "false"
scale_type_x17 = "viewport"
scale_x17 = "1.000000"
scale_type_y17 = "viewport"
scale_y17 = "1.000000"
shader18 = "shaders_slang/crt/shaders/guest/advanced/deconvergence-ntsc.slang"
filter_linear18 = "true"
wrap_mode18 = "clamp_to_border"
mipmap_input18 = "false"
alias18 = ""
float_framebuffer18 = "false"
srgb_framebuffer18 = "false"
scale_type_x18 = "viewport"
scale_x18 = "1.000000"
scale_type_y18 = "viewport"
scale_y18 = "1.000000"
TVOUT_RESOLUTION = "320.000000"
ntscsignal = "1.000000"
avalue = "0.000000"
bvalue = "0.000000"
ccvalue = "5.036432"
scantime = "36.800240"
notchhalfwidth = "1.100000"
ifreqresponse = "2.399999"
qfreqresponse = "1.200000"
signaloffset = "0.000000"
g_gamma_in = "1.800000"
g_gamma_out = "2.200000"
g_crtgamut = "1.000000"
g_hue_degrees = "-7.000000"
g_I_MUL = "1.080000"
g_Q_MUL = "0.800000"
g_lum_fix = "1.000000"
g_vignette = "0.000000"
g_lum = "-0.050000"
g_cntrst = "-0.400000"
g_sat = "-0.050000"
g_satr = "0.150000"
g_satg = "-0.050000"
g_satb = "0.050000"
g_lift = "0.030000"
quality = "-1.000000"
ntsc_scale = "1.200000"
ntsc_sat = "0.800000"
ntsc_bright = "0.850000"
ntsc_sharp = "7.000000"
ntsc_shape = "1.000000"
CSHARPEN = "2.000000"
CCONTR = "0.250000"
GAMMA_INPUT = "2.100000"
downsample_levelx = "1.000000"
downsample_levely = "0.350000"
HSHARPNESS = "8.000000"
SIGMA_HOR = "1.050000"
S_SHARP = "1.500000"
SIGMA_VB = "0.750000"
glow = "0.230000"
bloom = "0.400000"
mask_bloom = "0.500000"
bloom_dist = "0.200000"
halation = "0.100000"
gamma_c = "1.440000"
gsl = "-1.000000"
warpX = "0.050000"
warpY = "0.070000"
csize = "0.080000"
bsize1 = "0.300000"
shadowMask = "6.000000"
maskstr = "1.000000"
slotmask = "1.000000"
slotmask1 = "1.000000"
slotwidth = "3.000000"
double_slot = "2.000000"
mclip = "0.350000"
gamma_out = "2.000000"
deconrr = "2.000000"
deconrb = "8.500000"
deconrry = "0.750000"
deconrby = "-0.750000"
decons = "1.500000"
addnoised = "-0.220000"
noiseresd = "1.000000"
noisetype = "1.000000"
post_br = "1.100000"
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"

07 - ModDanny v2.301 (NoBorders) - Genesis Plus GX with borders set to OFF in options.

shaders = "19"
shader0 = "shaders_slang/crt/shaders/tvout-tweaks.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
shader1 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
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/mame_hlsl/shaders/old/shaders/mame_hlsl/shaders/mame_ntsc.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "StockPass"
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/afterglow0.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "AfterglowPass"
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/grade/pre-shaders-afterglow-grade.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "PrePass0"
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass1.slang"
filter_linear5 = "false"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "NPass1"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "4.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "0.500000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass3.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 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/crt/shaders/guest/advanced/custom-fast-sharpen.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = "NtscPass"
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/stock.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "true"
alias9 = "PrePass"
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/avg-lum-ntsc.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "true"
alias10 = "AvgLumPass"
float_framebuffer10 = "false"
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/linearize-ntsc.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = "LinearizePass"
float_framebuffer11 = "true"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc-pass1.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = "Pass1"
float_framebuffer12 = "true"
srgb_framebuffer12 = "false"
scale_type_x12 = "viewport"
scale_x12 = "1.000000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders_slang/crt/shaders/guest/advanced/gaussian_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 = "source"
scale_y13 = "1.000000"
shader14 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = "GlowPass"
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/bloom_horizontal.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = ""
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "absolute"
scale_x15 = "640"
scale_type_y15 = "absolute"
scale_y15 = "480"
shader16 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear16 = "true"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
alias16 = "BloomPass"
float_framebuffer16 = "true"
srgb_framebuffer16 = "false"
scale_type_x16 = "absolute"
scale_x16 = "640"
scale_type_y16 = "absolute"
scale_y16 = "480"
shader17 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc-pass2.slang"
filter_linear17 = "true"
wrap_mode17 = "clamp_to_border"
mipmap_input17 = "false"
alias17 = ""
float_framebuffer17 = "true"
srgb_framebuffer17 = "false"
scale_type_x17 = "viewport"
scale_x17 = "1.000000"
scale_type_y17 = "viewport"
scale_y17 = "1.000000"
shader18 = "shaders_slang/crt/shaders/guest/advanced/deconvergence-ntsc.slang"
filter_linear18 = "true"
wrap_mode18 = "clamp_to_border"
mipmap_input18 = "false"
alias18 = ""
float_framebuffer18 = "false"
srgb_framebuffer18 = "false"
scale_type_x18 = "viewport"
scale_x18 = "1.000000"
scale_type_y18 = "viewport"
scale_y18 = "1.000000"
TVOUT_RESOLUTION = "320.000000"
ntscsignal = "1.000000"
avalue = "0.000000"
bvalue = "0.000000"
ccvalue = "5.035932"
scantime = "34.000282"
notchhalfwidth = "1.100000"
ifreqresponse = "2.399999"
qfreqresponse = "1.200000"
signaloffset = "0.000000"
g_gamma_in = "1.800000"
g_gamma_out = "2.200000"
g_crtgamut = "1.000000"
g_hue_degrees = "-7.000000"
g_I_MUL = "1.080000"
g_Q_MUL = "0.800000"
g_lum_fix = "1.000000"
g_vignette = "0.000000"
g_lum = "-0.050000"
g_cntrst = "-0.400000"
g_sat = "-0.050000"
g_satr = "0.150000"
g_satg = "-0.050000"
g_satb = "0.050000"
g_lift = "0.030000"
quality = "-1.000000"
ntsc_scale = "1.200000"
ntsc_sat = "0.800000"
ntsc_bright = "0.850000"
ntsc_sharp = "7.000000"
ntsc_shape = "1.000000"
CSHARPEN = "2.000000"
CCONTR = "0.250000"
GAMMA_INPUT = "2.100000"
downsample_levelx = "1.000000"
downsample_levely = "0.350000"
HSHARPNESS = "8.000000"
SIGMA_HOR = "1.050000"
S_SHARP = "1.500000"
SIGMA_VB = "0.750000"
glow = "0.230000"
bloom = "0.400000"
mask_bloom = "0.500000"
bloom_dist = "0.200000"
halation = "0.100000"
gamma_c = "1.440000"
gsl = "-1.000000"
warpX = "0.050000"
warpY = "0.070000"
csize = "0.080000"
bsize1 = "0.300000"
shadowMask = "6.000000"
maskstr = "1.000000"
slotmask = "1.000000"
slotmask1 = "1.000000"
slotwidth = "3.000000"
double_slot = "2.000000"
mclip = "0.350000"
gamma_out = "2.000000"
deconrr = "2.000000"
deconrb = "8.500000"
deconrry = "0.750000"
deconrby = "-0.750000"
decons = "1.500000"
addnoised = "-0.220000"
noiseresd = "1.000000"
noisetype = "1.000000"
post_br = "1.100000"
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"

The shaders_slang/crt folder is where you’re supposed to have the LASTEST CRT.GUEST.R updated files, or whichever you have his files from his preset thread.

Thanks again to sonkun for his nice awesome preset contributions.

Have fun

6 Likes

I appreciate the love and glad that you and everyone else that downloaded my presets are enjoying them, those are my little babies and I love them dearly, I’m at a point where I can’t even emulate without them now lol.

I just loaded up your preset the one with the full borders and I gotta say it looks retro as hell. Whichever crt you were trying to emulate it seems like you nailed the look you were going for, makes me reminisce on the early 90’s for some reason, cool preset.

2 Likes

i’m nothing special bud. But i’m really glad I could contribute to you or this awesome community.

My last preset is based on your 07 preset from your last updated presets. USA warm fits to me good enough for 16 bits. I think you’re the one who did that awesome scanline looking with the “bloom” features.

I overall add the “deconvergence” red/green colors that I have seen around some Sonic 2/3 recordings on CRT TVs.

This other Sonic 3 record may help out as well:

The Rainbow banding is not the only artifact present into the TV I tend to see but also the deconvergence as well. I think I used to have a 22" TV that had such effect… I don’t certainly have currently available some functional CRT TV, even though some of them may work on the house but still.

I think the dithering/blurry looking fits so good to Sonic games and 16 bit era overall. I just hope I can bring up some different version(s) aside from yours.

1 Like

Oh yeah, every preset posted here by you me and everyone contributes in some way because there might be a user here or out there that will come here one day that’s looking for a shader that looks like yours, mines etc. And yes for the 8-16 bit era the warm look works perfectly, either USA warm or the default version I’ll use, just feels right. The cool temperature look works for everything above that era imo.

On my latest shader pack I indeed mixed in some mask bloom with minus regular bloom and came up with a little mix, I also been experimenting adding in more glow (up to either 16 or 24) but I’m not sure if that’s overdoing it, I’ll see.

Our presets are two sides of the same coin it seems, you’re going for the more blurry look while I’m trying to get the image as sharp as possible while still keeping it blurry enough to get all the dithering and rainbow banding effects, I think I managed to come up with something close enough to that.

I just added a new one by Sik ported over from blastem that handles the MD rainbows very nicely. I called it ntsc-blastem. Check it out. :slight_smile:

8 Likes

Looking forward to trying that out soon as I get home, been thinking my md-rainbow presets needed another tweak so this came right on time. Thank you for porting that over, I’ll report back after testing it out.

2 Likes

@hunterk so I tried it out last night, it indeed does the rainbow effect properly. The only thing I can’t seem to do with this shader is make it look sharper when I mix it into my guest ntsc preset, it’s extremely blurry but I assume that’s the nature of the shader itself. With the mame-ntsc shader I can produce really sharp results and still keep the dithering/rainbow effect. I didn’t get a chance to take comparison pics to show what I mean but maybe later I can.

1 Like

You can hack gdapt shaders to get sharp visuals. Use the gdapt pixel classifier results from pass0 and inject blastem code in gdapt-pass1 to only execute (blend pixels)where str is greater than zero.

2 Likes

I’ll try that out later, I think it’s possible to get some sexy results out of this shader just gotta tweak it right, thank you.

yeah, dunno. Looking at some of Sik’s screenshots from blastem standalone, it looks sharper, so there may be something it’s doing with the video output that I need to compensate for in the shader port.

I found that pre-scaling it by 2x or 4x in the previous pass and then dropping it back down afterward seems to help quite a bit without damaging the dedithering or rainbows.

shaders = 2

shader0 = ../stock.slang
scale_type0 = source
scale0 = 4.0

shader1 = shaders/ntsc-blastem.slang
scale_type1 = source
scale1 = 0.25
4 Likes

I’ll give this a try later as well, thanks.

Ok so I finally gave it a test with your suggested settings. For comparison sake I’ll post 3 diff pics.

My current standard composite preset:

My megadrive rainbow preset:

And the new mega drive rainbow preset using the blastem shader with the same tweaked settings as my above md-rainbows preset:

The blast em shader has become a bit sharper with your suggested settings but I still can’t get it as sharp as even my current MD rainbow preset, other than that it gets the job done as far as getting the rainbow look. I’m just at a phase at the moment where Im moving away from the typical blurry composite look, it might just be the nature of the shader and it’s designed that way. I still haven’t tried Hyllian’s method yet.

1 Like

Could you please share the preset either way on here as a reference (from 3rd picture)? It still looks amazing !

And thanks to @hunterk as always for his amazing contributions!

2 Likes

I ended up discarding and deleting it since guest.r just included a new “rainbow” setting in his ntsc shader. This is what I been working on:

I’m not sure if I’ll go with the first or second pic with the stronger rainbow effect. I’ll probably choose the first.

do crt advanced presets also allow now to include this rainbow effect? In that case, that’s wonderful to know! Thank you buddy !

Have been out for some time yet, I’m also excited to check out the new variants you have available since then!

1 Like