Please show off what crt shaders can do!

It’s ok in this thread. I want to avoid some version-confusion though and will post mostly ‘official’ versions in the regular thread. :wink:

1 Like

Great! I confess I need to educate myself on these new terms. I haven’t used this grade shader before and don’t know what it’s purpose in your preset.

1 Like

Color management is it’s purpose

1 Like

Just by reducing the number of passes, releasing bandwidth etc., there is 20% more speed out of the box. Especially igpu’s/apu’s are quite sensitive to this, because system memory is quite slow compared with VRAM on modern cards.

2 Likes

Ok, I’ll use it and try to understand about the latest achievements in crt emulation.

2 Likes

I’ve found that grade really helps with gamma and color management. I don’t change anything other than color temp, phosphor, and CRT gamma and that’s all region-specific.

Here’s the thread , lots of good discussion there, a lot of it over my head.

A random thought, because I don’t know where else to post it:

I think it’s possible to get a very CRT-like image with the brightness available on current displays, provided that the contrast ratio is good and the room is dark. There are home theater setups that are like 50 nits and it looks completely fine. Contrast ratio and controlled lighting are the most important things. Where I see a lot of people going wrong with shaders is that they boost the brightness of the dark pixels, which effectively raises the black level and ruins the contrast ratio. You want to keep the dark parts of the image dark and only raise the brightness of the bright parts of the image to maximize the contrast ratio. Thank you for listening to my Ted Talk.

Here are some screenshots of the preset I’m working on.

  1. https://pasteboard.co/JBA76dA.png -Transparency

  2. https://pasteboard.co/JBA8919.png -Blending

  3. https://pasteboard.co/JBA8U15.png -Normal

  4. https://pasteboard.co/JBAa0qN.png - Bonus

My goal is to get the cleanest image with the transparency effect.

Use your browser’s zoom out function if the images are not displayed correctly. :face_with_monocle:

7 Likes

Yeah, I use 80% backlight and BFI on my LG C9 and it looks great. So long as the room is dark, your eyes get used to it.

1 Like

I just can’t figure out the new guest-dr-venom, too many knobs and dials for me. CRT-Hyllian is nice for when you want to take a break from adjusting settings; works really well with minimal fuss.

armwar-201124-205321

shaders = "7"
shader0 = "shaders_slang/misc/grade.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "StockPass"
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/crt-gdv-new/afterglow0.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "AfterglowPass"
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/crt-gdv-new/pre-shaders-afterglow.slang"
filter_linear2 = "false"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "LinearizePass"
float_framebuffer2 = "true"
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/crt-gdv-new/avg-lum.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "true"
alias3 = "AvgLumPass"
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/crt-gdv-new/blur_horiz2.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
scale_type_x4 = "absolute"
scale_x4 = "800"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/crt-gdv-new/blur_vert2.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "GlowPass"
float_framebuffer5 = "false"
srgb_framebuffer5 = "false"
scale_type_x5 = "absolute"
scale_x5 = "800"
scale_type_y5 = "absolute"
scale_y5 = "600"
shader6 = "shaders_slang/crt/shaders/guest/crt-gdv-new/crt-guest-dr-venom2.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
scale_type_x6 = "viewport"
scale_x6 = "1.000000"
scale_type_y6 = "viewport"
scale_y6 = "1.000000"
parameters = "g_gamma_in;g_signal_type;g_gamma_type;g_crtgamut;g_space_out;g_hue_degrees;g_I_SHIFT;g_Q_SHIFT;g_I_MUL;g_Q_MUL;g_lum_fix;g_vignette;g_vstr;g_vpower;g_lum;g_cntrst;g_mid;wp_temperature;g_sat;g_vibr;g_satr;g_satg;g_satb;g_lift;blr;blg;blb;wlr;wlg;wlb;rg;rb;gr;gb;br;bg;LUT_Size1;LUT1_toggle;LUT_Size2;LUT2_toggle;PR;PG;PB;AS;sat;TNTC;CP;CS;WP;wp_saturation;GAMMA_INPUT;lsmooth;SIZEH;GLOW_FALLOFF_H;SIZEV;GLOW_FALLOFF_V;glow;bloom;TATE;IOS;OS;BLOOM;gamma_c;brightboost;brightboost1;gsl;scanline1;scanline2;beam_min;beam_max;beam_size;vertmask;scans;spike;h_sharp;s_sharp;csize;bsize;warpX;warpY;shadowMask;masksize;maskDark;maskLight;CGWG;mcut;mask_gamma;slotmask;slotwidth;double_slot;slotms;mclip;inter;interm;gamma_out"
g_gamma_in = "2.400000"
g_signal_type = "1.000000"
g_gamma_type = "1.000000"
g_crtgamut = "2.000000"
g_space_out = "0.000000"
g_hue_degrees = "0.000000"
g_I_SHIFT = "0.000000"
g_Q_SHIFT = "0.000000"
g_I_MUL = "1.000000"
g_Q_MUL = "1.000000"
g_lum_fix = "0.000000"
g_vignette = "0.000000"
g_vstr = "40.000000"
g_vpower = "0.200000"
g_lum = "0.000000"
g_cntrst = "0.000000"
g_mid = "0.500000"
wp_temperature = "7505.000000"
g_sat = "0.000000"
g_vibr = "0.000000"
g_satr = "0.000000"
g_satg = "0.000000"
g_satb = "0.000000"
g_lift = "0.000000"
blr = "0.000000"
blg = "0.000000"
blb = "0.000000"
wlr = "1.000000"
wlg = "1.000000"
wlb = "1.000000"
rg = "0.000000"
rb = "0.000000"
gr = "0.000000"
gb = "0.000000"
br = "0.000000"
bg = "0.000000"
LUT_Size1 = "16.000000"
LUT1_toggle = "0.000000"
LUT_Size2 = "64.000000"
LUT2_toggle = "0.000000"
PR = "0.140000"
PG = "0.140000"
PB = "0.140000"
AS = "0.080000"
sat = "0.100000"
TNTC = "0.000000"
CP = "0.000000"
CS = "0.000000"
WP = "0.000000"
wp_saturation = "1.000000"
GAMMA_INPUT = "2.400000"
lsmooth = "0.900000"
SIZEH = "4.000000"
GLOW_FALLOFF_H = "0.300000"
SIZEV = "4.000000"
GLOW_FALLOFF_V = "0.300000"
glow = "0.000000"
bloom = "0.000000"
TATE = "0.000000"
IOS = "0.000000"
OS = "1.000000"
BLOOM = "0.000000"
gamma_c = "1.000000"
brightboost = "1.000000"
brightboost1 = "1.500000"
gsl = "2.000000"
scanline1 = "9.000000"
scanline2 = "12.000000"
beam_min = "2.000000"
beam_max = "1.000000"
beam_size = "1.000000"
vertmask = "0.000000"
scans = "1.000000"
spike = "0.000000"
h_sharp = "3.000001"
s_sharp = "1.000000"
csize = "0.000000"
bsize = "600.000000"
warpX = "0.000000"
warpY = "0.000000"
shadowMask = "0.000000"
masksize = "1.000000"
maskDark = "0.500000"
maskLight = "1.000000"
CGWG = "0.700000"
mcut = "1.000000"
mask_gamma = "5.000000"
slotmask = "0.000000"
slotwidth = "2.000000"
double_slot = "1.000000"
slotms = "1.000000"
mclip = "0.500000"
inter = "350.000000"
interm = "1.000000"
gamma_out = "2.400000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron1.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron2.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/lut/other1.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
2 Likes

Just have to take it a step at a time.

The phosphors here look great IMO.

shaders = "2"
shader0 = "shaders_slang/misc/grade.slang"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "StockPass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
shader1 = "shaders_slang/crt/shaders/hyllian-new.slang"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "AfterglowPass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
parameters = "g_gamma_in;g_signal_type;g_gamma_type;g_crtgamut;g_space_out;g_hue_degrees;g_I_SHIFT;g_Q_SHIFT;g_I_MUL;g_Q_MUL;g_lum_fix;g_vignette;g_vstr;g_vpower;g_lum;g_cntrst;g_mid;wp_temperature;g_sat;g_vibr;g_satr;g_satg;g_satb;g_lift;blr;blg;blb;wlr;wlg;wlb;rg;rb;gr;gb;br;bg;LUT_Size1;LUT1_toggle;LUT_Size2;LUT2_toggle;VSCANLINES;InputGamma;OutputGamma;SHARPNESS;COLOR_BOOST;RED_BOOST;GREEN_BOOST;BLUE_BOOST;SCANLINES_STRENGTH;BEAM_MIN_WIDTH;BEAM_MAX_WIDTH;CRT_ANTI_RINGING;PHOSPHOR_LAYOUT;MASK_INTENSITY"
g_gamma_in = "2.400000"
g_signal_type = "1.000000"
g_gamma_type = "1.000000"
g_crtgamut = "2.000000"
g_space_out = "0.000000"
g_hue_degrees = "0.000000"
g_I_SHIFT = "0.000000"
g_Q_SHIFT = "0.000000"
g_I_MUL = "1.000000"
g_Q_MUL = "1.000000"
g_lum_fix = "0.000000"
g_vignette = "0.000000"
g_vstr = "40.000000"
g_vpower = "0.200000"
g_lum = "0.000000"
g_cntrst = "0.000000"
g_mid = "0.500000"
wp_temperature = "8005.000000"
g_sat = "0.000000"
g_vibr = "0.000000"
g_satr = "0.000000"
g_satg = "0.000000"
g_satb = "0.000000"
g_lift = "0.000000"
blr = "0.000000"
blg = "0.000000"
blb = "0.000000"
wlr = "1.000000"
wlg = "1.000000"
wlb = "1.000000"
rg = "0.000000"
rb = "0.000000"
gr = "0.000000"
gb = "0.000000"
br = "0.000000"
bg = "0.000000"
LUT_Size1 = "16.000000"
LUT1_toggle = "0.000000"
LUT_Size2 = "64.000000"
LUT2_toggle = "0.000000"
VSCANLINES = "0.000000"
InputGamma = "2.400000"
OutputGamma = "2.600000"
SHARPNESS = "1.000000"
COLOR_BOOST = "1.250000"
RED_BOOST = "1.000000"
GREEN_BOOST = "1.000000"
BLUE_BOOST = "1.000000"
SCANLINES_STRENGTH = "0.800000"
BEAM_MIN_WIDTH = "0.440000"
BEAM_MAX_WIDTH = "1.000000"
CRT_ANTI_RINGING = "1.000000"
PHOSPHOR_LAYOUT = "1.000000"
MASK_INTENSITY = "0.700000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron1.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron2.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/lut/other1.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
2 Likes

I haven’t touched it since the update -_-

Can’t get motivated to do shit atm

1 Like

I think I’m making progress with GDV.

2 Likes

That output gamma you use makes me shy on my tweakings…

On other news, I’m working to make the knobs even simpler than they are now. I’ll toss out the color channel knobs and the sharpness hack. I think they are useless and just pollute the list of params. I’ll add one or two more useful.

About the masks available on hunter’s include file, I’ve been trying to use them and to tell you the truth, I only like the very first aperture one (or the fourth one, I think they’re the same!?) for 1080p (that’s what I use on my PS3). I’ll take out the lotte’s masks as I think they let the screen very red. For 4k/8k, I like mask 10 the most. For me, as I play 1.5m from tv screen, a very prounounced mask makes the screen very dark, so I prefer very subtle masks.

This shader is very simple and I only want to include useful and easy to use features.

4 Likes

That looks like just blargg’s NTSC filter, right? If so, yeah, there’s a video filter for that, along with quite a few shaders that look similar in the ‘ntsc’ directory.

1 Like

Gamma on my plasma is like 1.8, so you might see me doing unusual things to gamma.

I never use sharpness hack or the color channel knobs, myself. Default sharpness looks fine.

Yeah, a lot of the masks could be considered experimental since they cause so much lost brightness, and then there are those that don’t play nice with the LCD subpixels or require specific subpixel layouts, and those that require high resolutions to work well. Many of these masks are waiting on better display technology.

One thing that kills it for me is the horizontal phosphor bloom you get with three-color (RGB) masks - it’s very unrealistic and looks very awkward IMO, so now I’m recommending that people stick to two-color masks, where the bloom doesn’t look as awkward/distracting. This is maybe a bummer for those who prefer something that looks more consumer-grade, but I think you need better display tech for that.

I’m wondering if there is a way to kill the horizontal phosphor bloom when using three color masks, adjust only the intensity and vertical bloom of the phosphors.

Here’s a second version of the “new” crt-hyllian: crt-hyllian (new version v2)

I have simplified the options. I think it’s very easy to tweak now. I have created two useful options:

  • Beam Profile
  • Horizontal Filter Profile

They’re for those who don’t wanna spend time tweaking very fine details. Each of them has some fixed params that I think are the most used by crt users.

Tell me what you think.

8 Likes

Looks really great, and very easy to use. The beam profile and horizontal filter profile are nice additions. I still prefer a custom beam profile, but profile 3 is pretty close to what I use.

Here are some current tweakings. The drop shadows look a bit weird but I still haven’t played with the horizontal filter profile enough. It’s not too terribly distracting at normal viewing distance, but occasionally some weird stuff pops up with the filter I’m currently using.

A scaled screenshot looks a bit weird, looks better in-game.

shaders = "2"
shader0 = "shaders_slang/misc/grade.slang"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "StockPass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
shader1 = "shaders_slang/crt/shaders/hyllian-new.slang"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "AfterglowPass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
parameters = "g_gamma_in;g_signal_type;g_gamma_type;g_crtgamut;g_space_out;g_hue_degrees;g_I_SHIFT;g_Q_SHIFT;g_I_MUL;g_Q_MUL;g_lum_fix;g_vignette;g_vstr;g_vpower;g_lum;g_cntrst;g_mid;wp_temperature;g_sat;g_vibr;g_satr;g_satg;g_satb;g_lift;blr;blg;blb;wlr;wlg;wlb;rg;rb;gr;gb;br;bg;LUT_Size1;LUT1_toggle;LUT_Size2;LUT2_toggle;BEAM_PROFILE;HFILTER_PROFILE;BEAM_MIN_WIDTH;BEAM_MAX_WIDTH;SCANLINES_STRENGTH;COLOR_BOOST;HFILTER_SHARPNESS;PHOSPHOR_LAYOUT;MASK_INTENSITY;CRT_ANTI_RINGING;InputGamma;OutputGamma;VSCANLINES"
g_gamma_in = "2.500000"
g_signal_type = "1.000000"
g_gamma_type = "1.000000"
g_crtgamut = "2.000000"
g_space_out = "0.000000"
g_hue_degrees = "0.000000"
g_I_SHIFT = "0.000000"
g_Q_SHIFT = "0.000000"
g_I_MUL = "1.000000"
g_Q_MUL = "1.000000"
g_lum_fix = "0.000000"
g_vignette = "0.000000"
g_vstr = "40.000000"
g_vpower = "0.200000"
g_lum = "-0.000000"
g_cntrst = "0.000000"
g_mid = "0.500000"
wp_temperature = "8505.000000"
g_sat = "0.000000"
g_vibr = "0.000000"
g_satr = "0.000000"
g_satg = "0.000000"
g_satb = "0.000000"
g_lift = "0.000000"
blr = "0.000000"
blg = "0.000000"
blb = "0.000000"
wlr = "1.000000"
wlg = "1.000000"
wlb = "1.000000"
rg = "0.000000"
rb = "0.000000"
gr = "0.000000"
gb = "0.000000"
br = "0.000000"
bg = "0.000000"
LUT_Size1 = "16.000000"
LUT1_toggle = "0.000000"
LUT_Size2 = "64.000000"
LUT2_toggle = "0.000000"
BEAM_PROFILE = "0.000000"
HFILTER_PROFILE = "0.000000"
BEAM_MIN_WIDTH = "0.500000"
BEAM_MAX_WIDTH = "1.000000"
SCANLINES_STRENGTH = "0.700000"
COLOR_BOOST = "1.800000"
HFILTER_SHARPNESS = "1.000000"
PHOSPHOR_LAYOUT = "1.000000"
MASK_INTENSITY = "0.900000"
CRT_ANTI_RINGING = "1.000000"
InputGamma = "3.600001"
OutputGamma = "3.200002"
VSCANLINES = "0.000000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron1.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron2.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/lut/other1.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
4 Likes

I was sure you’d go for the custom settings! :grin:

Thanks for the settings, I’ll incorporate as a 6th beam profile!

Your settings running on my Plasma through PS3:

3 Likes

I’m still trying to dial in gamma, might need to revise those settings.

Can you explain how Hyllian’s gamma works?

I thought setting both to the same value would result in a no-op, but that doesn’t appear to be the case.

3.5/3.5

2.4/2.4