Please show off what crt shaders can do!

5 Likes

LOL!! Amazing!!! Can you share it? Looks very very well!!!

Thanks

2 Likes

Is this an actual photo of the screen?

edit: NVM, it’s a screenshot.

The real challenge IMO is a close up photo of the LCD screen. With just the right amount of camera blur and the right shader settings it’s possible to take photos that are nigh identical to close-ups of a CRT.

this is pretty hard to do unless you have a high-end phone or camera. I tried with my phone and had a hard time with focus :stuck_out_tongue: I had luck only once!

It’s tricky, but possible. Taken with an iPhone camera:

You can still kinda see the pixel grid, this is a 1080p screen though. At 4K I think you could make the grid unnoticeable.

3 Likes

Envoi en cours : METROID 3.png…
1 Like

greetings to all i’m still playing on a sony kvb aperture grill and I’ve been working for a month on a shader preset that looks like my crt…

the shader uses misc slang? with crt royale??? shader parameter greetings to all i’m still playing on a sony kvb aperture grill the proof here… and I’ve been working for a month on a shader preset that looks like my crt… here is where I am, all the details are in the video

the shader uses misc slang? with crt royale??? https://drive.google.com/file/d/1oOOX7uG59pKejCNN8iXfBqfOX4_i-bnv/view?usp=sharing

shaders = "13"
shader0 = "shaders_slang/misc/grade.slang"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
shader1 = "shaders_slang/crt/shaders/crt-royale/src/crt-royale-first-pass-linearize-crt-gamma-bob-fields.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "ORIG_LINEARIZED"
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/crt/shaders/crt-royale/src/crt-royale-scanlines-vertical-interlacing.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "VERTICAL_SCANLINES"
float_framebuffer2 = "false"
srgb_framebuffer2 = "true"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "viewport"
scale_y2 = "1.000000"
shader3 = "shaders_slang/crt/shaders/crt-royale/src/crt-royale-bloom-approx.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "BLOOM_APPROX"
float_framebuffer3 = "false"
srgb_framebuffer3 = "true"
scale_type_x3 = "absolute"
scale_x3 = "320"
scale_type_y3 = "absolute"
scale_y3 = "240"
shader4 = "shaders_slang/blurs/blur5fast-vertical.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
float_framebuffer4 = "false"
srgb_framebuffer4 = "true"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/blurs/blur5fast-horizontal.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "HALATION_BLUR"
float_framebuffer5 = "false"
srgb_framebuffer5 = "true"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/crt-royale/src/crt-royale-mask-resize-vertical.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
scale_type_x6 = "absolute"
scale_x6 = "64"
scale_type_y6 = "viewport"
scale_y6 = "0.062500"
shader7 = "shaders_slang/crt/shaders/crt-royale/src/crt-royale-mask-resize-horizontal.slang"
filter_linear7 = "false"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "MASK_RESIZE"
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
scale_type_x7 = "viewport"
scale_x7 = "0.062500"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/crt/shaders/crt-royale/src/crt-royale-scanlines-horizontal-apply-mask.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = "MASKED_SCANLINES"
float_framebuffer8 = "false"
srgb_framebuffer8 = "true"
scale_type_x8 = "viewport"
scale_x8 = "1.000000"
scale_type_y8 = "viewport"
scale_y8 = "1.000000"
shader9 = "shaders_slang/crt/shaders/crt-royale/src/crt-royale-brightpass.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = "BRIGHTPASS"
float_framebuffer9 = "false"
srgb_framebuffer9 = "true"
scale_type_x9 = "viewport"
scale_x9 = "1.000000"
scale_type_y9 = "viewport"
scale_y9 = "1.000000"
shader10 = "shaders_slang/crt/shaders/crt-royale/src/crt-royale-bloom-vertical.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = ""
float_framebuffer10 = "false"
srgb_framebuffer10 = "true"
scale_type_x10 = "source"
scale_x10 = "1.000000"
scale_type_y10 = "source"
scale_y10 = "1.000000"
shader11 = "shaders_slang/crt/shaders/crt-royale/src/crt-royale-bloom-horizontal-reconstitute.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = ""
float_framebuffer11 = "false"
srgb_framebuffer11 = "true"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders_slang/crt/shaders/crt-royale/src/crt-royale-geometry-aa-last-pass.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "true"
alias12 = ""
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "viewport"
scale_x12 = "1.000000"
scale_type_y12 = "viewport"
scale_y12 = "1.000000"
g_gamma_in = "2.200000"
g_gamma_out = "2.200000"
g_signal_type = "0.000000"
g_crtgamut = "0.000000"
g_space_out = "3.000000"
g_Q_MUL = "0.000000"
g_lum_fix = "1.000000"
g_vignette = "0.000000"
g_vstr = "0.000000"
g_vpower = "0.000000"
g_cntrst = "-0.200000"
g_mid = "0.600000"
g_sat = "-0.000001"
g_vibr = "1.000000"
LUT_Size1 = "8.000000"
LUT_Size2 = "32.000000"
crt_gamma = "2.199990"
lcd_gamma = "2.499999"
levels_contrast = "0.671875"
diffusion_weight = "0.000000"
bloom_underestimate_levels = "0.000000"
bloom_excess = "0.505000"
beam_min_sigma = "0.375001"
beam_max_sigma = "0.000000"
beam_spot_power = "0.010000"
beam_max_shape = "2.000000"
beam_shape_power = "0.010000"
beam_horiz_sigma = "0.285000"
convergence_offset_x_r = "-0.300000"
mask_specify_num_triads = "1.000000"
mask_triad_size_desired = "1.000000"
mask_num_triads_desired = "160.000000"
aa_subpixel_r_offset_x_runtime = "0.000000"
aa_cubic_c = "0.000000"
aa_gauss_sigma = "0.060000"
geom_radius = "3.000000"
geom_aspect_ratio_x = "512.000000"
geom_aspect_ratio_y = "512.000000"
geom_overscan_x = "0.875000"
geom_overscan_y = "0.777343"
border_size = "0.005000"
border_darkness = "0.000000"
border_compress = "1.000000"
interlace_detect_toggle = "0.000000"
textures = "mask_grille_texture_small;mask_grille_texture_large;mask_slot_texture_small;mask_slot_texture_large;mask_shadow_texture_small;mask_shadow_texture_large;SamplerLUT1;SamplerLUT2;SamplerLUT3"
mask_grille_texture_small = "shaders_slang/crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5SpacingResizeTo64.png"
mask_grille_texture_small_linear = "true"
mask_grille_texture_small_wrap_mode = "repeat"
mask_grille_texture_small_mipmap = "true"
mask_grille_texture_large = "shaders_slang/crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5Spacing.png"
mask_grille_texture_large_linear = "true"
mask_grille_texture_large_wrap_mode = "repeat"
mask_grille_texture_large_mipmap = "true"
mask_slot_texture_small = "shaders_slang/crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacingResizeTo64.png"
mask_slot_texture_small_linear = "true"
mask_slot_texture_small_wrap_mode = "repeat"
mask_slot_texture_small_mipmap = "false"
mask_slot_texture_large = "shaders_slang/crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacing.png"
mask_slot_texture_large_linear = "true"
mask_slot_texture_large_wrap_mode = "repeat"
mask_slot_texture_large_mipmap = "true"
mask_shadow_texture_small = "shaders_slang/crt/shaders/crt-royale/TileableLinearShadowMaskEDPResizeTo64.png"
mask_shadow_texture_small_linear = "true"
mask_shadow_texture_small_wrap_mode = "repeat"
mask_shadow_texture_small_mipmap = "false"
mask_shadow_texture_large = "shaders_slang/crt/shaders/crt-royale/TileableLinearShadowMaskEDP.png"
mask_shadow_texture_large_linear = "true"
mask_shadow_texture_large_wrap_mode = "repeat"
mask_shadow_texture_large_mipmap = "true"
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

really happy with the clean rendering like my reference sony crt… no improvement of the core beetle psx hw resolution x1, native dithering, no filter, no anti aliasing, no anistrope, just the shader filtering a raw image…

2 Likes

Trinitrons used aperture grille and you’re using a slotmask, just saying. Looks good man, have fun. You’re doing it right.

1 Like

I’m ded.

The sass is so real rn.

thanks for the slot mask precision, but the oled is wrgb… I don’t see any difference … I really try to be faithful to my crt, and especially to have a nice contrast image even with the bfi

here my crt sony kvb slot mask? aperture grill?

2 Likes

my LG C9 is WRGB but the white pixel is only engaged under certain conditions. It’s not an always on kind of thing.

1 Like

Conditions? Can you tell me exactly what these conditions are? Because my tv. doesn’t have the white pixel activated or not.

He probably can’t. As it’s almost for certain they’re being used to bright boost and to add contrast when needed. (Ie. It’s not something he has control of) So it’s whenever it’s called for really. (Could be a contrast threshold being hit or a brightness one, these could be reached activates them)

1 Like

That’s what I think too, it’s not an option available on my oled panasonic ez950… I hear about this several times, but it is not available on the manual of the TV, nor anywhere. But some lg oled users on the forums here… Say that. Who to believe? What to believe? For me the wrgb is not a problem, neither for the mask, nor for the scanlines… The W is just to increase the life of the diodes…the white is made by RGB at 100% that wears out the 3 colors, then the white diode is there to compensate for that…lighting a white diode does not wear out the 3 RGB diodes… (there is other explanation but I will not enter in details here…).

It’s not an issue of wear but of subpixel spacing. The subpixel spacing using an RGB mask with an RGBW pixel structure looks like this

RxxWxGxWxxBWRxxW etc

Thus you get very irregular spacing of the subpixels and color shifts as a result of the active subpixels not being regularly spaced.

Compare this to the magenta-green pattern using a standard RGB subpixel structure:

RxBxGxRxBxGx etc.

The ultimate goal is to have emulated phosphors that resemble actual crt phosphors when you take a photo of the lcd (not a screenshot).

6 Likes

what I say is a fact, that the manufacturer lg has created the white diode for the life of rvb diodes is a fact, which has been declared by the manufacturer. I said I don’t go into the details of subpixel structure in relation to shader and retrogaming what i see is identical to you nesguy, on my oled wrvb no? for me it’s identical same phosphors, same rendering but in 4k can be more accurate, but i’m not going to plug my plasma panasonic g20 1080p to compare. my question is when you talk about magenta mask, or black and white mask, I don’t see any magenta mask, did you open the mask in photoshop to see more closely maybe? Always a pleasure to share with you. I had to compress my jpg here always useful…

10mb > 1.4mb

SHADER GUEST ADVANCED REVISION2 trinitron aperture grill on oled 4K WRVB the problem is just the exposure, under exposure of the camera. take the oled in macro mode photos. i’m not a photographer shutter speed? the most adequate to take photos? i don’t know but i share anyway

I really don’t like xbr, to a trained eye it looks very unnatural and inauthentic. You get dark pixels that bleed over the gaps between scanlines which never happens on a real CRT. The edges of sprites and such also look wonky and deformed. It’s just too heavy-handed an approach, IMO. GDV has all the horizontal filtering you need :slightly_smiling_face:

Edit: maybe there’s a way to do xbr filtering just on the horizontal axis? I still think it would look weird.

I like subtractive sharpness 1.00 with horizontal sharpness at 3.00 or 4.00, with maybe just a touch of sharpening filter. Basically, black outlines around sprites should be solid black, with minimal or no ghosting.

3 Likes

If we’re going for accurate, the very darkest scanlines should be thinner and the black outline around the sprite should be cleaner. At 1080p you want the minimum scanline (picture line) width to be 1px wide to come close to what a Trinitron could do. Beam width variation on CRTs gives additional depth to the image and adds pop to highlights.

Gamma and color might need an adjustment, looks over-saturated but that could be a camera thing.

The black outline around the sprite should be clean and bold, so sharpness settings might need to be adjusted to achieve that. See my reply to Cyber above. Happy tweaking!

4 Likes

Are you saying that these screenshots look like XBR? My presets are based on Newpixie-clone_smoothed_rolling_scanlines_gdv_std which is based on MBZ_2_STD_GDV preset. I use Scale FX. The imgur uploads and RetroArch screenshots appear blended, softer and much less detailed than what I actually see in gameplay from my normal viewing distance. What I see is very crisp (but not too crisp) and high contrast and far from wonky and distorted in terms of edges and contrasts in the lines.

I posted some camera screenshots in another thread and if you look, you’ll see that they are sharper than my imgur uploads screenshots but they are still far from what is actually seen. I suggest you try out the presets yourself if you have a 4K screen before judging the presets qualities. They still may not be to your liking and preference but at least you’ll see them in a better dispensation and one that is closer to what I see and experience.

In addition to that, I’ve noticed some issues with the appearance of my screenshots taken with RetroArch. They don’t seem to be 1:1 representations of what I see. They appear lossy. I don’t know if it’s something with Windows 10 photo viewer but it’s something I’ve only now started to notice and look into. I’ll have to find a way in the future to get some more accurate and representative screenshots but in the meantime, I suggest you give the presets a quick whirl before you judge once you have a 4K screen.

2 Likes