Please show off what crt shaders can do!

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

It’s just a power function in and out. Basically I can resume gamma usage in three steps in the shader:

  1. input_colors = input_color^(InputGamma)

  2. output_color = crt_operations(input_colors)

  3. output_color = output_color ^(1/OutputGamma)

1 Like

So how do we get a no-op with Hyllian’s gamma?

I guess it’s somewhat moot since it’s the final measured gamma after doing all the crt stuff that really matters. Kinda makes me question the usefulness of gamma correction in CRT shaders since everything you do after gamma correction (scanlines, masks etc) alters the gamma further. I think the only way to really ensure accurate gamma is to measure the gray ramp after all effects are applied.

No idea. Gamma is an art I think.

Now, how this compares to the other screenshot?

The other one: https://i.imgur.com/PxBIoEB.png

2 Likes

That’s probably a good way to look at it, gamma correction in shaders doesn’t really “correct” the gamma but is just another tool in the box.

That shot looks great! Loving the phosphors. Looks great on my iPhone with the backlight maxed out.

That shot is an experiment I’m doing here. I just swapped the filters to sinc. The original crt-hyllian is cubic horizontally and gaussian vertically. I changed both to sinc. That’s why the shot is razor sharp.

But I doubt it’s accurate in any sense:

10 Likes

Very cool :star_struck:, it has a really nice rounding shading type effect happening, but doesn’t feel blurry.

2 Likes

Here’s the experimental shader: crt-hyllian-sinc

My settings for these shots (only for 4k. If 1080p, use mask 4):

shaders = "1"
feedback_pass = "0"
shader0 = "shaders_slang/crt/shaders/crt-hyllian-sinc.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
parameters = "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"
BEAM_PROFILE = "0.000000"
HFILTER_PROFILE = "0.000000"
BEAM_MIN_WIDTH = "0.500000"
BEAM_MAX_WIDTH = "1.000000"
SCANLINES_STRENGTH = "0.420000"
COLOR_BOOST = "1.799999"
HFILTER_SHARPNESS = "1.000000"
PHOSPHOR_LAYOUT = "10.000000"
MASK_INTENSITY = "0.900000"
CRT_ANTI_RINGING = "1.000000"
InputGamma = "2.400000"
OutputGamma = "2.200000"
VSCANLINES = "0.000000"
4 Likes

Very nice, can you add this as an option? What settings did you use?

Edit: ninja’d!

I need your expert opinion if it’s worth.

This filter is very sensible to the params. I need to decrease the knob steps.

in time: the profiles are all off with sinc filter. You need to use custom settings.

1 Like

sgenpt-mix-v4 + crt-hyllian-sinc = CRT Emulation on next lvl :innocent: but too dark :crazy_face:

Even on my 1080p it’s outperform crt-royale :grin:

Keep up the great work Hyllian!

What is Mask 4 parameter please ? It looks awesome !

I change PHOSPHOR_LAYOUT = “10.000000” to PHOSPHOR_LAYOUT = “4.000000”

On 1080p looks awesome.

If it’s too dark, you need to reduce MASK_INTENSITY a bit. Or even change the mask. MASK 10 is for 4k/8k. If you run in 1080p or less, use MASK 1 or 4.