Please show off what crt shaders can do!

Not sure if those are my most recent settings; I’ve done some additional fine-tuning since then, I think. My current shader settings can be found here. I believe I’ve achieved the maximum dynamic range possible while avoiding clipping or eye strain and maintaining visibility of dark details. Feedback from @Rafan and others was a big help. Some adjustments to Dogway’s grade shader have to be made on a per-game basis for optimum results, though.

For the slotmask, I recommend the following changes to the parameters in guest-dr-venom:

CRT Mask: -1.00

Slot Mask Strength: 0.50 - 1.00 depending on how bright your backlight can get. 0.70 seems about right to me.

Slot Mask Size - 3.00 seems about right if you want to emulate a TV at 1080p. 2.00 looks a bit more like a pro monitor.

This is for 1080p; you’ll need to make an adjustment to slot mask size and width for different resolutions. I also recommend 5x vertical scale because reasons.

2 Likes

You know @Dogway did overhauls to grade again right?

1 Like

I started writing a comprehensive guide to all the CRT masks but there’s just too much going on right now and I’m too damn lazy.

If you check the shader notes within the shader file, descriptions are given for each mask.

You need to consider the resulting TVL when using these masks at different resolutions and the TVL of different CRT displays. You can determine the TVL by determining the width of the phosphor triad in pixels and dividing the vertical resolution in pixels by the width of the phosphor triad in pixels.

Some quick notes. Numbers below refer to the masks in guest-dr-venom.

0 - cgwg aperture grille. Good for emulating a consumer-grade Trinitron at 720p, looks like a PVM at 1080p.

1 - weird slot mask, needs higher than 1080p. Not great since it results in chromatic aberration

2 - 3 line aperture grille. TVL is roughly equal to a consumer-grade Trinitron at 1080p. Not a great mask; results in chromatic aberration

3 - stretched dot mask. Doesn’t resemble any known CRT mask but it avoids chromatic aberration. 270 TVL at 1080p, 540 TVL at 4K

4 - coarse dot mask, needs higher than 1080p resolutions and results in CA

5 - 2 line aperture grille, same resolution recommendations as mask 0, except this one does some kind of brightness compensation that has an undesirable effect on gamma

6 - another variant of the 2 line aperture grille; becomes fainter over brighter colors (the opposite of what happens with real CRT phosphors). Also does weird stuff to gamma in my experience.

7 - yet another 2 line aperture grille that does unwanted stuff to gamma. Black and white.

So, basically, my recommendation is to use either mask 0 at 720p to emulate a consumer-grade Trinitron or at 1080p to emulate a PVM. Use mask 3 if you want something that more closely resembles a shadow mask CRT. The guest-dr-venom slotmask (the one with separate parameters) is also very good as it avoids chromatic aberration and can be adjusted to different sizes for different resolutions. There are also a lot of good masks for 4K displays in @hunterk’s giant mask shader function.

4 Likes

Nope, I’ll check it out though. Life’s been a bit hectic.

1 Like

He did a handful of things, like 2 or 3?

1 Like

Idk, I like both of those for different reasons. I think razor-sharp pixels are fine for GBA because the artwork was designed for the GBA’s LCD screen. They both have their charms, though.

I think the LCD shader is another good option for handheld systems.

1 Like

Im trying your settings! and good look with lot of options.

Can you add the new HLSL effects humbar, jitter, and distortion? or how to? i ave the settings in HLSL but the mask i not find a good.

Thanks.

So i am using a 19" 1280x1024 monitor, with mask 0 i get 640 emulated pixels, pretty close to a CRT TV, what about the TVL? I get 1024/2= 512? That looks close to a high res PVM. I guess if i stretch the image 5x4 let’s say NES 256x240= 1280x960 but then the pixels will be incorrect? I mean 1 pixel will be 5 pixels on screen, that’s 2,5 emulated pixels.

1 Like

Look, this is with a filter that put a member abobe, @Nesguy, not is HLSL shader. That filter of that screenshot not ave distortion real, not ave humbar, and not ave jitter effect.

This near perfect, i try jut a bit… That kind of mask is same that CRT geo, but is not possible to get in HLSL filter, im not know how, is the triniton, but the sizing is not teh same as Nesguy silter config.

That screen shot with the other effect…and we ave the PERFECT SYSTEM. pum

I dont know how to add these effecta on a filter, …if i find i will add. Also Nesguy config need the option of…centering screen!!, because los of plattaforms and games need this, because some games is not centered good, tekken arcades, some neo geo…Flycast …

If not possible the movement effect of newpixie-crt is welcome too, but the real is the jitter. Thanks.

  • After some tests I reverted the gamma rework commit, but I did change the OETF to sRGB, so for the most people under sRGB display it doesn’t mean any change to the preset settings.
  • I also added a Rec.709 output space if you calibrated to 2.4 gamma.
  • Fixed the LUT implementation (now it works properly)
  • Fixed rolled_gain function (was clipping some, might be of interest to @Nesguy )
  • Fixed a small issue on glsl version.
  • Changed temperature default to D55 (more neutral)
  • And added output space range up to 4.0 to include AdobeRGB (an overlook on my side).

So for the most part it means no changes on the user side for current presets.

2 Likes

The suggestions I posted are for guest-dr-venom, sorry for not making that clear :neutral_face:

I’ll add a note to the post.

You can take these suggestions and apply them to HLSL but the setting names and numbers won’t be the same.

You can center the screen with the video settings, but it should already be centered unless you’re using a non-integer custom resolution.

@LinerCRT

1 Like

Yep :slight_smile: Similar to a PVM. TVs had lower TVL, like 250-400 depending on size. It’s worth noting, though, that some PVMs had low a TVL, too. A 9” PVM could have 250 TVL; build quality, beam focus, connection options etc are what really distinguish a small PVM from a similar-sized TV.

I recommend taking the horizontal resolution, dividing by 3, then taking the resulting number and multiplying by 4 and setting a custom horizontal res. That way you have an exact 4:3 ratio while still using all of the vertical area of the screen. For example, if the vertical scale is 5x integer on a 1080p monitor and 1120 pixels tall: (1120/3) * 4 = 1493.333… which you round up to 1494 to perfectly center the image. The easiest thing to do here is to save the core overrides and then add a line in the config file for that core:

custom_viewport_width = "1494"

The important thing to remember is that a CRT is going to “correct” the image to 4:3, so I wouldn’t worry about pixel shape too much. Some people are really particular about such things, though, trying to get squares perfectly square or circles perfectly circular even though they wouldn’t appear that way on a CRT. If that’s your thing, more power to you.

2 Likes

@Nesguy @hunterk

Nesguy the community want your settings filter sugesttions but with jitter, humbar and distortion effects, because is near perfect to the real arcade CRT screens.

HLSL is great but i dint know how to add the sugestions of your filter settings. Nesguy filter apply the mask best than HLSL and ave another good sugestions effects too.

The Community of Shader, need this complete, this combination! or Nesguy filter suggestions with jitter, humbar and distortion, or HLSL with most of your settins suggestions, mask mode mettod, etc.

I know too with experience the CRT screens, with that settings comunnity play good and make very great and reality filter!

If i know any tutorial to do i wil try…

Big thanks!!!

Thanks for the kind words! I’m not sure how to achieve what you want, unfortunately. I know newpixie-crt has many of the effects you’re describing, so you could try replacing one of the stock passes at the beginning of the preset with that.

I’m not a big fan of those aspects of a CRT that didn’t enhance the image. I’m more interested in objective picture quality vs. absolute accuracy. For what it’s worth, jitter, humbar, etc. aren’t present on a good CRT that’s been well-maintained.

1 Like

Yes is about quality of image.

@hunterk add yesterday the jitter effect and the humbar filter effect with options to HLSL, newpixie-crt is another type of jitter but is not the real jitter of arcade CRT screens. Distortion effect no because HSLS was before.

Try to add to your settings, Hum bar, Jitter efffect and Distortion. HLSL as recently updated, yesterday, with jitter and humbar effects

We need to do that!! for the perfect image and simulation shader/picture.

I’ll check out HLSL some time in the next few days. Optimizing the HLSL shader has been on my to-do list for a while, anyway.

Regarding quality, I’m mostly only interested in things that enhance the objective picture quality (dynamic range/depth, color accuracy, etc) and less interested in things like signal artifacts, jitter, geometric distortion, etc since I don’t believe that these things actually enhance the image in an objective way. Geometric distortion and misconvergence is a good example highlighting the difference between “accuracy” and “quality.” On an actual CRT, there was always some amount of geometric distortion and misconvergence, but you tried to eliminate these things as much as possible through calibration. With emulation we can completely eliminate these undesirable artifacts, so that’s what I opt to do. Some people opt to include these things for the sake of nostalgia, but it’s not my cup of tea.

1 Like

Thanks ! for the try. I see your settings, very complete, im sure you do…

The idea is to get the rel arcade CRT, somes worn or burned…other NTSC, other the colors, etc… 70 years screens, 80, 90… We need Hum bar, Jitter and distortion in your settings…or your settings in the HLSL shader. Communitty entire win with that results.

With that, i will put the results.

Just a quick side-by-side.

guest-dr-venom slotmask:

Lottes stretched dot mask:

guest-dr-venom slotmask

shaders = "10"
shader0 = "shaders_slang/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/stock.slang"
filter_linear1 = "true"
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/misc/grade.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "WhitePointPass"
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/afterglow.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/avg-lum.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "true"
alias4 = "AvgLumPass"
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/linearize.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "LinearizePass"
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/blur_horiz.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/blur_vert.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "GlowPass"
float_framebuffer7 = "true"
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/linearize_scanlines.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "true"
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/crt-guest-dr-venom.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "viewport"
scale_x9 = "1.000000"
scale_type_y9 = "viewport"
scale_y9 = "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;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_in = "2.500000"
g_signal_type = "0.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 = "7905.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.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.400000"
TAPSH = "4.000000"
GLOW_FALLOFF_H = "0.300000"
TAPSV = "4.000000"
GLOW_FALLOFF_V = "0.300000"
TATE = "0.000000"
IOS = "0.000000"
OS = "1.000000"
BLOOM = "0.000000"
brightboost = "0.500000"
brightboost1 = "1.500001"
gsl = "2.000000"
scanline1 = "15.000000"
scanline2 = "5.000000"
beam_min = "1.000000"
beam_max = "0.850000"
beam_size = "0.000000"
h_sharp = "3.000000"
s_sharp = "1.000000"
csize = "0.000000"
bsize = "600.000000"
warpX = "0.000000"
warpY = "0.000000"
glow = "0.020000"
shadowMask = "-1.000000"
masksize = "1.000000"
vertmask = "0.000000"
slotmask = "0.700000"
slotwidth = "3.000000"
double_slot = "1.000000"
slotms = "1.000000"
mcut = "0.250000"
maskDark = "0.500000"
maskLight = "1.500000"
CGWG = "0.300000"
gamma_out = "2.400000"
spike = "1.000000"
inter = "400.000000"
interm = "1.000000"
bloom = "0.000000"
scans = "1.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"

Lottes stretched dot mask

shaders = "10"
shader0 = "shaders_slang/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/stock.slang"
filter_linear1 = "true"
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/misc/grade.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "WhitePointPass"
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/afterglow.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/avg-lum.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "true"
alias4 = "AvgLumPass"
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/linearize.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "LinearizePass"
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/blur_horiz.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/blur_vert.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "GlowPass"
float_framebuffer7 = "true"
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/linearize_scanlines.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "true"
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/crt-guest-dr-venom.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "viewport"
scale_x9 = "1.000000"
scale_type_y9 = "viewport"
scale_y9 = "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;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_in = "2.500000"
g_signal_type = "0.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 = "7905.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.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.400000"
TAPSH = "4.000000"
GLOW_FALLOFF_H = "0.300000"
TAPSV = "4.000000"
GLOW_FALLOFF_V = "0.300000"
TATE = "0.000000"
IOS = "0.000000"
OS = "1.000000"
BLOOM = "0.000000"
brightboost = "0.500000"
brightboost1 = "1.500001"
gsl = "2.000000"
scanline1 = "15.000000"
scanline2 = "5.000000"
beam_min = "1.000000"
beam_max = "0.850000"
beam_size = "0.000000"
h_sharp = "3.000000"
s_sharp = "1.000000"
csize = "0.000000"
bsize = "600.000000"
warpX = "0.000000"
warpY = "0.000000"
glow = "0.020000"
shadowMask = "3.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.400000"
spike = "1.000000"
inter = "400.000000"
interm = "1.000000"
bloom = "0.000000"
scans = "1.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"
6 Likes

Nice comparison, interesting to see how the brown and dark green are quite a bit darker with the lottes mask.

My personal preference (that I’m using in my setup also) is the guest-dr-venom slotmask. I think it remains brightness the best while maintaining that grungy CRT look from normal viewing distance without overdoing it. My personal preference is to keep the slotmask strength between 0.50 and 0.55, any higher it kills the vibrance of “white” in white if you know what I mean, regardless of backlight strength. But personal taste may differ of course :).

Are you using Nestopia or the Mesen core for NES? And which palette setting in these emulators do you find most accurate?

1 Like

You can tweak the Lottes mask to have more contrast and brightness but I just use the default mask settings.

The color palette is composite direct FBX in Nestopia; it’s about as accurate as it gets (to intended colors) as far as I know.

http://www.firebrandx.com/nespalette.html