Please show off what crt shaders can do!

indeed, while we can’t actually see HDR on an SDR monitor, those pics look plenty bright, which is what really matters to us in this case.

5 Likes

Did some calculations with my theory of CRT dot pitch. A 640x400 14" CRT has around 0.50 mm dot pitch. My laptop monitor 1920x1080 and 15.4" has around 0.17mm. So the proper mask would be 3 pixels wide or Mask 2 of Lottes (RGB stripes). And that should be the same pixel size with a 14" CRT.

That helped me understand why masks look rubbish on another TV set 30" with 1366x768, because native mask already has 0.50mm. If you add mask 0 on top it goes up to 1mm lol, while a 20" 640x400 CRT has 0.65mm

P.S. a 20" BVM should have around 0.30mm or else mask 0 on a 1080p 15.4" monitor

5 Likes

Almost nailed my settings for crt-guest-advanced. Maybe I’ll mess a little more with colours, the Trinitron LUT, which I use, has strong, saturated tones, but significantly different in browns, for example. If someone should have a photo of Yoshi’s Island taken from a CRT, he would be very welcome. For a comparison, the second screenshot has been captured with standard settings.

Edit: just found out the difference in the colours of the trees doesn’t depend on LUT. Maybe it’s because of the scanlines type set at 2, I’ll have a look.

2 Likes

It works!

That’s probably a 4K monitor though, I’m guessing, since all(?) HDR monitors are.

The settings I posted use a mask suitable for 1080p displays, so the subpixel artifacts are quite bad on a 4K screen. Here are some 4K settings to try, which should result in some nice looking RGB phosphors, almost identical to the real thing, assuming your monitor has a standard RGB subpixel layout.

shaders = "40"
shader0 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm/hsm-prep-add-params-standard.slang"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
shader1 = "shaders_slang/stock.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "DerezedPass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "true"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm/hsm-prep-info-cache-standard.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "InfoCachePass"
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/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm/hsm-prep-intro-standard.slang"
filter_linear3 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "IntroPass"
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/stock.slang"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "PreDeDitheringPass"
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
shader5 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-mdapt/hsm-mdapt-pass0.slang"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = ""
float_framebuffer5 = "false"
srgb_framebuffer5 = "false"
shader6 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-mdapt/hsm-mdapt-pass1.slang"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
shader7 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-mdapt/hsm-mdapt-pass2.slang"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = ""
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
shader8 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-mdapt/hsm-mdapt-pass3.slang"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
shader9 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-mdapt/hsm-mdapt-pass4.slang"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
shader10 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-sgenpt-mix/hsm-sgenpt-mix.slang"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = ""
float_framebuffer10 = "false"
srgb_framebuffer10 = "false"
shader11 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-ps1dither/hsm-PS1-Undither-BoxBlur.slang"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = ""
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
shader12 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-custom-fast-sharpen.slang"
filter_linear12 = "false"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = ""
float_framebuffer12 = "true"
srgb_framebuffer12 = "true"
shader13 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-dogway/hsm-grade.slang"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
alias13 = ""
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
shader14 = "shaders_slang/stock.slang"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = "refpass"
float_framebuffer14 = "false"
srgb_framebuffer14 = "false"
shader15 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-scalefx/hsm-scalefx-pass0.slang"
filter_linear15 = "false"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "scalefx_pass0"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "source"
scale_x15 = "1.000000"
scale_type_y15 = "source"
scale_y15 = "1.000000"
shader16 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-scalefx/hsm-scalefx-pass1.slang"
filter_linear16 = "false"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
alias16 = ""
float_framebuffer16 = "false"
srgb_framebuffer16 = "false"
scale_type_x16 = "source"
scale_x16 = "1.000000"
scale_type_y16 = "source"
scale_y16 = "1.000000"
shader17 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-scalefx/hsm-scalefx-pass2.slang"
filter_linear17 = "false"
wrap_mode17 = "clamp_to_border"
mipmap_input17 = "false"
alias17 = ""
float_framebuffer17 = "false"
srgb_framebuffer17 = "false"
scale_type_x17 = "source"
scale_x17 = "1.000000"
scale_type_y17 = "source"
scale_y17 = "1.000000"
shader18 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-scalefx/hsm-scalefx-pass3.slang"
filter_linear18 = "false"
wrap_mode18 = "clamp_to_border"
mipmap_input18 = "false"
alias18 = ""
float_framebuffer18 = "false"
srgb_framebuffer18 = "false"
scale_type_x18 = "source"
scale_x18 = "1.000000"
scale_type_y18 = "source"
scale_y18 = "1.000000"
shader19 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-scalefx/hsm-scalefx-pass4.slang"
filter_linear19 = "false"
wrap_mode19 = "clamp_to_border"
mipmap_input19 = "false"
alias19 = ""
float_framebuffer19 = "false"
srgb_framebuffer19 = "false"
scale_type_x19 = "source"
scale_x19 = "3.000000"
scale_type_y19 = "source"
scale_y19 = "3.000000"
shader20 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-gtu/hsm-gtu-pass1.slang"
wrap_mode20 = "clamp_to_border"
mipmap_input20 = "false"
alias20 = ""
float_framebuffer20 = "true"
srgb_framebuffer20 = "false"
scale_type_x20 = "source"
scale_x20 = "1.000000"
scale_type_y20 = "source"
scale_y20 = "1.000000"
shader21 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-gtu/hsm-gtu-pass2.slang"
filter_linear21 = "false"
wrap_mode21 = "clamp_to_border"
mipmap_input21 = "false"
alias21 = ""
float_framebuffer21 = "true"
srgb_framebuffer21 = "false"
scale_type_x21 = "source"
scale_x21 = "1.000000"
scale_type_y21 = "source"
scale_y21 = "1.000000"
shader22 = "shaders_slang/stock.slang"
wrap_mode22 = "clamp_to_border"
mipmap_input22 = "false"
alias22 = "PreCRTPass"
float_framebuffer22 = "false"
srgb_framebuffer22 = "false"
shader23 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-afterglow0.slang"
filter_linear23 = "false"
wrap_mode23 = "clamp_to_border"
mipmap_input23 = "false"
alias23 = "AfterglowPass"
float_framebuffer23 = "false"
srgb_framebuffer23 = "false"
scale_type_x23 = "source"
scale_x23 = "1.000000"
scale_type_y23 = "source"
scale_y23 = "1.000000"
shader24 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-pre-shaders-afterglow.slang"
filter_linear24 = "false"
wrap_mode24 = "clamp_to_border"
mipmap_input24 = "true"
alias24 = "PrePass"
float_framebuffer24 = "false"
srgb_framebuffer24 = "false"
scale_type_x24 = "source"
scale_x24 = "1.000000"
scale_type_y24 = "source"
scale_y24 = "1.000000"
shader25 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-avg-lum.slang"
filter_linear25 = "true"
wrap_mode25 = "clamp_to_border"
mipmap_input25 = "true"
alias25 = "AvgLumPass"
float_framebuffer25 = "false"
srgb_framebuffer25 = "false"
scale_type_x25 = "source"
scale_x25 = "1.000000"
scale_type_y25 = "source"
scale_y25 = "1.000000"
shader26 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-interlace-and-linearize.slang"
filter_linear26 = "true"
wrap_mode26 = "clamp_to_border"
mipmap_input26 = "false"
alias26 = "LinearizePass"
float_framebuffer26 = "true"
srgb_framebuffer26 = "false"
scale_type_x26 = "source"
scale_x26 = "1.000000"
scale_type_y26 = "source"
scale_y26 = "1.000000"
shader27 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-gaussian_horizontal.slang"
filter_linear27 = "true"
wrap_mode27 = "clamp_to_border"
mipmap_input27 = "false"
alias27 = ""
float_framebuffer27 = "true"
srgb_framebuffer27 = "false"
scale_type_x27 = "absolute"
scale_x27 = "800"
scale_type_y27 = "source"
scale_y27 = "1.000000"
shader28 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-gaussian_vertical.slang"
filter_linear28 = "true"
wrap_mode28 = "clamp_to_border"
mipmap_input28 = "false"
alias28 = "GlowPass"
float_framebuffer28 = "true"
srgb_framebuffer28 = "false"
scale_type_x28 = "absolute"
scale_x28 = "800"
scale_type_y28 = "absolute"
scale_y28 = "600"
shader29 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-bloom_horizontal.slang"
filter_linear29 = "true"
wrap_mode29 = "clamp_to_border"
mipmap_input29 = "false"
alias29 = ""
float_framebuffer29 = "true"
srgb_framebuffer29 = "false"
scale_type_x29 = "absolute"
scale_x29 = "800"
scale_type_y29 = "absolute"
scale_y29 = "600"
shader30 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-bloom_vertical.slang"
filter_linear30 = "true"
wrap_mode30 = "clamp_to_border"
mipmap_input30 = "false"
alias30 = "BloomPass"
float_framebuffer30 = "true"
srgb_framebuffer30 = "false"
scale_type_x30 = "source"
scale_x30 = "1.000000"
scale_type_y30 = "source"
scale_y30 = "1.000000"
shader31 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-crt-guest-advanced.slang"
filter_linear31 = "true"
wrap_mode31 = "clamp_to_border"
mipmap_input31 = "false"
alias31 = ""
float_framebuffer31 = "false"
srgb_framebuffer31 = "false"
scale_type_x31 = "viewport"
scale_x31 = "1.000000"
scale_type_y31 = "viewport"
scale_y31 = "1.000000"
shader32 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-deconvergence.slang"
filter_linear32 = "true"
wrap_mode32 = "clamp_to_border"
mipmap_input32 = "false"
alias32 = ""
float_framebuffer32 = "false"
srgb_framebuffer32 = "false"
scale_type_x32 = "viewport"
scale_x32 = "1.000000"
scale_type_y32 = "viewport"
scale_y32 = "1.000000"
shader33 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm/hsm-prep-post-crt.slang"
wrap_mode33 = "clamp_to_border"
mipmap_input33 = "false"
alias33 = "MBZ_PostCRTPass"
float_framebuffer33 = "false"
srgb_framebuffer33 = "false"
shader34 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm/hsm-linearize-crt.slang"
filter_linear34 = "true"
wrap_mode34 = "clamp_to_border"
mipmap_input34 = "true"
alias34 = "BR_MirrorLowResPass"
float_framebuffer34 = "false"
srgb_framebuffer34 = "false"
scale_type_x34 = "absolute"
scale_x34 = "800"
scale_type_y34 = "absolute"
scale_y34 = "600"
shader35 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm/hsm-blur-outside-screen-horiz.slang"
filter_linear35 = "true"
wrap_mode35 = "clamp_to_border"
mipmap_input35 = "true"
alias35 = ""
float_framebuffer35 = "false"
srgb_framebuffer35 = "false"
shader36 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm/hsm-blur-outside-screen-vert.slang"
filter_linear36 = "true"
wrap_mode36 = "clamp_to_border"
mipmap_input36 = "false"
alias36 = "BR_MirrorBlurredPass"
float_framebuffer36 = "false"
srgb_framebuffer36 = "false"
shader37 = "shaders_slang/blurs/blur9x9.slang"
filter_linear37 = "true"
wrap_mode37 = "clamp_to_border"
mipmap_input37 = "true"
alias37 = "BR_MirrorReflectionDiffusedPass"
float_framebuffer37 = "false"
srgb_framebuffer37 = "false"
scale_type_x37 = "absolute"
scale_x37 = "128"
scale_type_y37 = "absolute"
scale_y37 = "128"
shader38 = "shaders_slang/blurs/blur9x9.slang"
filter_linear38 = "true"
wrap_mode38 = "clamp_to_border"
mipmap_input38 = "true"
alias38 = "BR_MirrorFullscreenGlowPass"
float_framebuffer38 = "false"
srgb_framebuffer38 = "false"
scale_type_x38 = "absolute"
scale_x38 = "12"
scale_type_y38 = "absolute"
scale_y38 = "12"
shader39 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm/hsm-bezel-reflection-standard.slang"
wrap_mode39 = "clamp_to_border"
mipmap_input39 = "false"
alias39 = "BR_CRTAndReflectionPass"
float_framebuffer39 = "true"
srgb_framebuffer39 = "false"
scale_type_x39 = "viewport"
scale_x39 = "1.000000"
scale_type_y39 = "viewport"
scale_y39 = "1.000000"
HSM_ASPECT_RATIO_ORIENTATION = "1.000000"
HSM_ASPECT_RATIO_MODE = "2.000000"
HSM_INT_SCALE_MODE = "1.000000"
HSM_INT_SCALE_BORDER_MIN_HEIGHT = "0.000000"
HSM_NON_INTEGER_SCALE = "100.169739"
HSM_CURVATURE_MODE = "-1.000000"
HSM_GAMMA_IN_LINEARIZE = "2.399999"
HSM_GAMMA_OUT_CRT = "2.400001"
HSM_POST_CRT_BRIGHTNESS = "300.000000"
HSM_TUBE_BLACK_EDGE_CURVATURE_SCALE = "1000.000000"
HSM_FRM_THICKNESS = "150.000000"
g_gamma_out = "2.550000"
g_crtgamut = "0.000000"
g_vignette = "0.000000"
wp_temperature = "6504.000000"
GDV_AFTERGLOW_THRESHOLD = "0.000000"
PR = "0.000000"
PG = "0.000000"
PB = "0.000000"
AS = "0.000000"
sat = "0.000000"
WP = "-100.000000"
glow = "-0.000000"
brightboost = "1.000000"
brightboost1 = "1.000000"
gsl = "2.000000"
scanline1 = "10.000000"
scanline2 = "12.000000"
beam_max = "1.300001"
beam_size = "1.000000"
vertmask = "0.200000"
scans = "1.000000"
spike = "0.000000"
h_sharp = "5.000000"
s_sharp = "0.000000"
shadowMask = "8.000000"
maskstr = "1.000000"
mcut = "1.000000"
masksize = "1.000000"
mask_gamma = "2.399999"
slotwidth = "3.000000"
mclip = "0.000000"
decons = "-0.000000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4;IntroImage;ScreenPlacementImage;ColoredGelImage;TubeStaticReflectionImage;BackgroundImage;BackgroundVertImage;ReflectionMaskImage;FrameTextureImage;CabinetGlassImage;DeviceImage;DeviceVertImage;DecalImage;NightLightingImage;LEDImage;TopLayerImage"
SamplerLUT1 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/lut/trinitron-lut.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/lut/inv-trinitron-lut.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/lut/nec-lut.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/lut/ntsc-lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"
IntroImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/IntroImage_MegaBezelLogo.png"
IntroImage_linear = "true"
IntroImage_wrap_mode = "clamp_to_border"
IntroImage_mipmap = "false"
ScreenPlacementImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_Transparent_16x16.png"
ScreenPlacementImage_linear = "false"
ScreenPlacementImage_wrap_mode = "clamp_to_border"
ScreenPlacementImage_mipmap = "false"
ColoredGelImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_Transparent_16x16.png"
ColoredGelImage_linear = "true"
ColoredGelImage_wrap_mode = "clamp_to_border"
ColoredGelImage_mipmap = "false"
TubeStaticReflectionImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/TubeGlassOverlayImage_3840x2160.png"
TubeStaticReflectionImage_linear = "true"
TubeStaticReflectionImage_wrap_mode = "clamp_to_border"
TubeStaticReflectionImage_mipmap = "false"
BackgroundImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/BackgroundImage_Carbon_3840x2160.png"
BackgroundImage_linear = "true"
BackgroundImage_wrap_mode = "clamp_to_border"
BackgroundImage_mipmap = "false"
BackgroundVertImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/BackgroundImage_Carbon_3840x2160.png"
BackgroundVertImage_linear = "true"
BackgroundVertImage_wrap_mode = "clamp_to_border"
BackgroundVertImage_mipmap = "false"
ReflectionMaskImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_White_16x16.png"
ReflectionMaskImage_linear = "true"
ReflectionMaskImage_wrap_mode = "clamp_to_border"
ReflectionMaskImage_mipmap = "false"
FrameTextureImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/FrameTexture_2800x2120.png"
FrameTextureImage_linear = "true"
FrameTextureImage_wrap_mode = "clamp_to_border"
FrameTextureImage_mipmap = "false"
CabinetGlassImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_Transparent_16x16.png"
CabinetGlassImage_linear = "true"
CabinetGlassImage_wrap_mode = "clamp_to_border"
CabinetGlassImage_mipmap = "false"
DeviceImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_Transparent_16x16.png"
DeviceImage_linear = "true"
DeviceImage_wrap_mode = "clamp_to_border"
DeviceImage_mipmap = "false"
DeviceVertImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_Transparent_16x16.png"
DeviceVertImage_linear = "true"
DeviceVertImage_wrap_mode = "clamp_to_border"
DeviceVertImage_mipmap = "false"
DecalImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_Transparent_16x16.png"
DecalImage_linear = "true"
DecalImage_wrap_mode = "clamp_to_border"
DecalImage_mipmap = "false"
NightLightingImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/NightLighting_3840x2160.jpg"
NightLightingImage_linear = "true"
NightLightingImage_wrap_mode = "clamp_to_border"
NightLightingImage_mipmap = "false"
LEDImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_Transparent_16x16.png"
LEDImage_linear = "true"
LEDImage_wrap_mode = "clamp_to_border"
LEDImage_mipmap = "false"
TopLayerImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_Transparent_16x16.png"
TopLayerImage_linear = "true"
TopLayerImage_wrap_mode = "clamp_to_border"
TopLayerImage_mipmap = "false"

Let’s see some photos!

2 Likes

I’ll have to figure out a tripod for my phone but here are two new shots.

My calibration device had me turn the brightness on my monitor down to 38%. It is at 100% for these shots.

All I can say is that it is really spectacular in person… the closer you get to the screen, the more it looks like a CRT! :exploding_head:

This close-up doesn’t do it justice.

8 Likes

It does look good in person with HDR (4k), the problem is the loading time of the shader, ~ 5 minutes in d3d12, this is a photo taken from my phone, it looks brighter in person.

6 Likes

Possibly, after v1.0 is released, @HyperspaceMadness can look into what is going on with DX12 and the Mega Bezel. It may turn out to be an RA issue and not a shader issue.

4 Likes

Is there a reason everyone is using d3d12? d3d11 should support HDR, as well.

6 Likes

I was under the impression that the Mega Bezel wouldn’t run on DX11. Turns out that is not true… still takes a full 5 minutes to load though. :frowning_face:

Is there Vulkan support for HDR in the works?

5 Likes

What manner of sorcery is this @Duimon ? Does this preset have a name yet? Are these @Nesguy 's settings?

1 Like

It is something @Nesguy posted just above.

3 Likes

Probably the sorcery is called 4k monitor lol

3 Likes

I can just imagine! ** Cries in broken OLED **

Excellent work by @Nesguy! Great proof of concept demonstration by @Duimon and excellent work to implement HDR by the RetroArch dev team! What an awesome way to close out 2021! Let’s hope that 2022 will be filled with even more hope!!

Feel free to post a copy of these settings and instructions for both 4K as well as 1080p in my shader preset thread @Nesguy. I’m sure they can benefit users who’re looking for the best of the best!!

2 Likes

@MajorPainTheCactus I was wondering, are you still looking at an implementation of HDR in Vulkan?

3 Likes

The pixel grid is the last thing keeping this from passing the Pepsi challenge, I think- anyone have a 21” iMac lying around?

One problem is that as we increase screen size we have to increase resolution to prevent the pixel grid from being noticeable, and then we have to change the mask pattern to maintain the same TVL.

RxxRxxRGxxGxxGBxxBxxB

Red, Red, Yellow, Green, Cyan, Blue, Blue

~617 TVL @ 8K ~309 TVL @ 4K

RxxRxxRxxRGxxGxxGxxGBxxBxxBxxB

Red, Red, Red, Yellow, Green, Green, Cyan, Blue, Blue, Blue

432 TVL @ 8K

RxxRxxRxxRxxRGxxGxxGxxGxxGBxxBxxBxxBxxB

Red, Red, Red, Red, Yellow, Green, Green, Green, Cyan, Blue, Blue, Blue, Blue

~332 TVL @ 8K

You can do even weirder stuff at 5K+ resolutions to create a convincing slot mask pattern, there’s a thread about it somewhere on the forums.

2 Likes

Very good research and work @Nesguy . Keep it up! If you build it they will certainly come!!! I hope you’re enjoying the journey as much as you will the destination!

Maybe someone can document and collate all of your findings. I’m sure you have enough information to create a paper or a book on these things. It would be quite interesting reading/viewing material and an important step along the road to preservation!

I see this as history in the making!

1 Like

I tried running HSM and guest.r under DX 11 and 12 to use HDR but I found it to be very buggy. Don’t know if it’s Direct X or if these slang settings don’t work well with DX. We need either HSM and guest.r to work well with DX or Retroarch HDR to work with vulkan. beggars can’t be choosers, though :stuck_out_tongue:

2 Likes

So I’m trying out something a bit different than usual. After reading several posts in this and other threads extolling the benefits of maxing out mask strength in the shader parameters and eliminating artificial brightness enhancements, I decided to try it out for myself, using primarily CRT-Guest-Dr-Venom on a 1080p IPS monitor. I managed to recreate the images achieved by others, with strong black lines, an accurate aperture grille mask using Mask Type 0, and the resulting dim image, mitigated by maxing out my monitor’s brightness.

After playing around with the settings, though, I found I could entirely eliminate the black lines and get something like a fuzzy bilinear-esque look with an aperture grille mask on top. It’s not a bad image, but I am not sure any CRT has ever displayed 240p quite this way unless they were tiny and very out of focus. But I do know many old consumer-level CRTs, even among the Sony Trinitrons and particularly the smaller 14"-19" sets, had very subtle gaps between the scanlines, and on bright colors were often entirely gone. There are many pictures on the internet that demonstrate this. So I decided to see if I could recreate this look while keeping the strong mask and see what I could do.

This is what I’ve got so far:

For this shot, I decided upon Mask 2, as it more closely resembles the lower TVL of average consumer Trinitron sets rather than the PVM-esque look of Mask 0, and the slot masks are unfortunately too compromised at this resolution in my opinion. I think it fits better with the more subtle scanlines on darker colors, and as you can see, they are gone entirely on bright colors. I also added a bit of deconvergence, as I think it adds a bit of nice “texture” to the scanlines, and no actual monitor or set has perfect convergence anyway. :yum:

That said, I can see some flaws. A few things like the HELP text to the right look a bit off with this mask (it looks fine with Mask 0), so I’d imagine it’s something to do with the subpixels. Also, obviously, it’s dark. And I’m still messing around with the increase bright scanline beam parameter to see what looks best. But I think it’s a nice look for these games. If there’s any suggestions on how best to improve the intended look, I’m all ears.

Here’s the parameters I’ve arrived at thus far:

#reference ":/shaders/shaders_slang/crt/crt-guest-dr-venom.slangp"
AS = "0.070000"
PR = "0.050000"
brightboost = "0.500000"
brightboost1 = "0.500000"
scanline1 = "1.000000"
scanline2 = "5.000000"
beam_min = "1.600001"
beam_max = "1.150000"
beam_size = "0.300000"
s_sharp = "0.000000"
glow = "0.000000"
shadowMask = "2.000000"
vertmask = "0.140000"
maskDark = "0.000000"
maskLight = "2.000000"
CGWG = "1.000000"
gamma_out = "2.250000"
spike = "0.000000"
2 Likes

Since I don’t have the energy right now for long explanations, I’m going to post a puzzle for you. See if you can figure out what this means.

Red, green, blue

RxxxGxxxBRxxxGxxxB

Red, green, blue, black

RxxxGxxxBxxxRxxxGxxxBxxx

270 TVL is actually probably perfect for what you’re trying to do. @GPDP1

Also, here are some nice reference photos of the look you’re going for. There’s another good one somewhere out there of Metroid on a 9” PVM, sans scanlines, but I gave up trying to find it.

image

This post should be required reading for anyone playing with CRT masks.

3 Likes

Mask 2 is the one to go for 1080p consumer CRT look. Mask 0 is for PVM/BVM look as I explained some posts above. Dot pitch and TVL are closer with mask 2.

2 Likes