Dogway's grading shader (slang)

Try with POW mode, sRGB mode is not designed for such high values, check the GIF. Maybe you can try increasing brightness with the contrast, or even leveraging venom’s gamma settings.

EDIT: This comparison is srgb-srgb vs pow-pow, in grade there’s no pow out so the crushing in blacks is more severe with 2.85. You can try to do this with venom’s gamma settings, grade’s gamma workflow was meant to be accuracy based, btw are there CRTs with such high gamma?

srgb mode 2.85

1 Like

Yep, POW gamma did the trick w/CRT gamma @ 2.4!

Current results/settings:

shaders = "8"
shader0 = "shaders_slang/crt/shaders/guest/grade.slang"
filter_linear0 = "true"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "WhitePointPass"
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/afterglow.slang"
filter_linear1 = "true"
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/avg-lum.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "true"
alias2 = "AvgLumPass"
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/linearize.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "LinearizePass"
float_framebuffer3 = "true"
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/blur_horiz.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
float_framebuffer4 = "true"
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/blur_vert.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "GlowPass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/guest/linearize_scanlines.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 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/crt-guest-dr-venom.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = ""
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
scale_type_x7 = "viewport"
scale_x7 = "1.000000"
scale_type_y7 = "viewport"
scale_y7 = "1.000000"
parameters = "g_gamma_out;g_gamma_in;gamma_type;g_vignette;g_vstr;g_vpower;g_csize;g_bsize;wp_temperature;g_sat;g_vibr;g_hpfix;g_lum;g_cntrst;g_mid;g_lift;blr;blg;blb;wlr;wlg;wlb;rg;rb;gr;gb;br;bg;LUT_Size1;LUT1_toggle;LUT_Size2;LUT2_toggle;SW;AR;PR;AG;PG;AB;PB;sat;lsmooth;GAMMA_INPUT;TAPSH;GLOW_FALLOFF_H;TAPSV;GLOW_FALLOFF_V;TATE;IOS;OS;BLOOM;brightboost;brightboost1;gsl;scanline1;scanline2;beam_min;beam_max;beam_size;h_sharp;s_sharp;csize;bsize;warpX;warpY;glow;shadowMask;masksize;vertmask;slotmask;slotwidth;double_slot;slotms;mcut;maskDark;maskLight;CGWG;gamma_out;spike;inter;interm;bloom;scans"
g_gamma_out = "2.200000"
g_gamma_in = "2.400000"
gamma_type = "0.000000"
g_vignette = "0.000000"
g_vstr = "40.000000"
g_vpower = "0.200000"
g_csize = "0.000000"
g_bsize = "600.000000"
wp_temperature = "9311.000000"
g_sat = "0.000000"
g_vibr = "-0.000000"
g_hpfix = "1.000000"
g_lum = "-0.000000"
g_cntrst = "0.000000"
g_mid = "0.000001"
g_lift = "0.000000"
blr = "0.000000"
blg = "0.000000"
blb = "0.000000"
wlr = "1.000000"
wlg = "1.000000"
wlb = "1.000000"
rg = "-0.050000"
rb = "-0.050000"
gr = "0.005000"
gb = "0.000000"
br = "0.000000"
bg = "-0.005000"
LUT_Size1 = "16.000000"
LUT1_toggle = "0.000000"
LUT_Size2 = "64.000000"
LUT2_toggle = "0.000000"
SW = "1.000000"
AR = "0.070000"
PR = "0.050000"
AG = "0.070000"
PG = "0.050000"
AB = "0.070000"
PB = "0.050000"
sat = "0.100000"
lsmooth = "0.900000"
GAMMA_INPUT = "2.200000"
TAPSH = "4.000000"
GLOW_FALLOFF_H = "0.000000"
TAPSV = "4.000000"
GLOW_FALLOFF_V = "0.000000"
TATE = "0.000000"
IOS = "0.000000"
OS = "1.000000"
BLOOM = "0.000000"
brightboost = "1.000000"
brightboost1 = "1.000000"
gsl = "2.000000"
scanline1 = "15.000000"
scanline2 = "23.000000"
beam_min = "1.000000"
beam_max = "0.700000"
beam_size = "0.000000"
h_sharp = "3.500000"
s_sharp = "0.000000"
csize = "0.000000"
bsize = "600.000000"
warpX = "0.000000"
warpY = "0.000000"
glow = "0.000000"
shadowMask = "-1.000000"
masksize = "1.000000"
vertmask = "0.000000"
slotmask = "0.000000"
slotwidth = "2.000000"
double_slot = "1.000000"
slotms = "1.000000"
mcut = "0.250000"
maskDark = "0.500000"
maskLight = "1.500000"
CGWG = "0.300000"
gamma_out = "2.200000"
spike = "1.000000"
inter = "400.000000"
interm = "1.000000"
bloom = "0.000000"
scans = "0.000000"
textures = "SamplerLUT1;SamplerLUT2"
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"
2 Likes

Started playing around with the tint controls and then I realized I was just making the color temp 6500k again, lol.

Try as I might, I just cannot get behind a cooler temp, despite the evidence that it’s more accurate for games produced in Japan. A lot of colors look too dull, and others have a weird fluorescent quality to them.

Grey bars have an undeniable blue tint with 9300k, but at 6500k they look more or less exactly as they should, with no red or blue bias. I confirmed this by zooming in with GIMP and checking the color values.

9300k

6500k

These blues seem blue enough to me… The reds and greens are nicely saturated, too.

3 Likes

I know what you mean but consider D93 an artifact of the time. I recall D65 was the spec for CRT but all TVs were manufactured with D93 tuning for the same reasons today displays are tuned to D93. If you calibrate your monitor to D65, games should look rather good in D93 because I guess that’s what developers would shoot for.

But if you don’t like it set it to 6504, that’s why the setting is exposed.

2 Likes

Personally I feel like they both have a tint to the grey and white, as the 6500k has a red-ish hue to it (may not be red exactly but it’s somewhere between a red and orange shift, it’s really noticeable seeing them compared to each other.), though the hue-shift isn’t as noticeable as the 9300k’s blue-shift in the greys but I prefer the whites of the 9300k. (Basically the 6500k looks like you set a TV to warm color mode, and the 9300k looks like you set it to cool. Which both do a drastic shift in hue, towards red and blue respectively.)

I feel this completely preference at this point. Nice game shots though. I’m kinda interested in what it would look like in the middle of those two temps, could you try 7900k that may be a nice middle, imho.

6500k has no red or blue tint, 9300k has a noticeable blue tint. It’s not subjective or display-dependent; you can use color picker in GIMP to confirm the color values.

Excuse me for eyeballing it. I’m just saying the entire middle section of 6500k looks like it has a warmer color temp. And if you recall I clearly said that 9300k had a more noticeable hue shift out of the two.

I’m not going to argue with you about it, if you say it’s pure white it’s pure white.

The 240p suite is designed with D65 in mind, it’s going to measure neutral grey at D65 no matter what. This is not the issue, but whether games were designed with D65 or D93 in mind.

One could argue that if you go to a game and measure a pixel that looks like in a greyscale value it could report the intended temperature designed for the game, but I’m not so sure that such old systems color palettes included tinted greys, so it can’t also be proof for anything (maybe later systems only like N64, PSX, etc)

2 Likes

Okay, that makes sense.

I discovered by playing around some more that raising saturation by around 10% fixes most of the dullness I was perceiving with 9300k.

I also discovered that NTSC-J uses a 0 IRE black level, instead of 7.5 IRE like regular NTSC. So… that’s good to know. Colors still seem a bit radioactive but I guess it’ll take some getting used to.

@Syh no worries man and sorry if I came off as rude, was 7 AM here when I wrote that :grimacing:

2 Likes

You’re good man, appears we’re in the same time zone lol. As it’s 9am for me right now.

1 Like

0 IRE black level means the internal offset of the signal. In NTSC-U this offset is compensated later to show as black on a CRT, the same for a Japanese CRT. It only changes how the internal operations are performed (TV or PC levels).

I always like to raise black level but not because of that but artistic reasons, I don’t remember CRTs being pitch black, not sure if because glass reflections or any other reason, I don’t have CRTs to compare to an OLED so…

2 Likes

I lift black for exactly the same reason, I always remember it being an off-black, definitely not grey but clearly not pure black.

I have a Trinitron-style (Silver, Flat-Glass Style) Sanyo CRT that I use as reference.

I had one of those too, a 20”. I remember it was surprisingly good for a crappy TV, lol. Decent digital comb filter. Nice grungy slotmask.

The other thing that gets me with all this color stuff is that TVs all had different filters/decoders and would display very different colors given the same signal. So… I guess we should just go with whatever looks good to us :man_shrugging:

2 Likes

I have a 30" with an apeture grille (at least it seems like an apeture grille, when the TV is off I can clearly see the RGB strips going down the TV without any horizontal lines splitting the strips, I’m not sure if you can see a slot-with the TV off, 🤷.)

It’s not too bad, though I don’t really use it much, as I only have a PS2 to hook up to it currently, it does have a component connection though so that’s nice, lol.

At least I think it’s 30" I know for sure it isn’t a 16" lol.

Oh, nice. Should have some nice scanlines on a set that size. Component cables can be a bit pricey but I think they’re worth it. RGB modding is more trouble than its worth IMO, and less authentic. I always just try to use the best connection that’s available without mods. However, it’s worth pointing out that composite video is almost indistinguishable from S-video on some Wegas due to the high quality comb filter.

Edit: if it’s a Sony, it’s an aperture grille :wink:

AFAIK only Sony made aperture grille TVs and all their TVs were aperture grille, but there were some aperture grille PC monitors made by other companies.

Sanyo exclusively made slotmask tubes (99% sure).

1 Like

I’m lucky as I bought a component cable for my PS3 years ago when I had bought a surround sound as I thought I needed it for it, I did not lol.

The component cable works on my PS2 wonderfully though, gotta love those old Sony consoles and them sharing cables, though I can’t use the component cable on a PS1.

I kinda want to get a raspberry pi to hook up too, but money is tight lol.

So I decided to power it on, it’s an unaligned slot-mask, appearantly you cannot see the slot section of the mask without the TV powered on, lol.

1 Like

I updated grade with a new reverse CRT transfer function, using smpte-c coefficients. It confirms my suspects that everything looked too dark forcing me to switch to sRGB. It also increases dynamic range in the low range with better shade separation.

I also included crt-guest-dr-venom’s P22 phosphor gamut, since also a toggle was added and it topped the max available slots for shader settings, I had to remove hotspot fix. Now we are doing the phosphor gamut within the shader so it would be advisable to use BW pattern masks like the ones from @ProfessorBraun , here.

By the way if @guest.r knows what color system is used for the transformation matrices in color-profiles I would be very grateful, I would like to test converting to my display profile instead of srgb.

Here before and after with the changes.

5 Likes

Did you fix the hotspot issue or just drop the setting because too many settings?

Also the update looks interesting, the main color difference I see on mobile is the blues, I can see the changes to the reds from this as well, but the blues stick out more, sonic himself is the the most noticeable.

1 Like

I dropped it, it had issues anyway so when I get to it again I will think on something better.

Yes, for me the first thing that I noticed is the mountains, they were brown not black. Also great shade separation on sonic’s head spike and better transition on the dark parts of the flag. I must say that this SMPTE-C is fine for 16-bit and earlier, but as I found out, some later games lilke medievil uses a power function. On PSX I think it’s kind of a mixed bag so one has to test which one looks better.

The shades of blues I think it’s because I reverted wlb back to 1.0. I think I can get it back with a negative “rb”

1 Like

It works in a way that color profiles transform to XYZ and color space matrices (DCI-P3…) transform back to RGB. So color manipulations can be combined. Default to XYZ is sRGB, default ‘from XYZ’ is sRGB.

2 Likes