Got a screen burnin on my LCD display using a specific Shader config

Ok this was a scare today and in fact it’s not even 15 minutes ago as of the time of this writing. Today I experimented with a new core, MojoZork to play Zork 1. I decided to find a new Shader configuration to mimic the typical greenish terminals from the 70s, at least how it looks from the images. I tried some different settings and combinations of multiple Shaders. For the most part it works and at least the resulting image is usable for me.

However.

I have tried to play the game now and after 10 minutes of frustrations decided to lookup what commands are available to the game. And that is when I saw the greenish portion of the emulated games menu image is burned onto my monitor screen very clearly. Rebooting PC and turning off screen for a minute and playing some video over that area did not help (at least it wasn’t gone). While I am writing this text, it seems to be gone now BTW, so it’s not permanent.

Did anyone of you experience this problem ever? I won’t use this Shader preset for now as it seems to be “dangerous”. Maybe the burn in occurred while playing with some extreme settings and this preset isn’t the fault. Am I overreacting? It’s the first time I experience this ever on any monitor at all.

  • Monitor: AOC AG271QG Agon (IPS panel, 2017)
  • Preset: terminal_monitor.slangp (I think based on ntsc/ntsc-adaptive.slangp + presets/crtsim-grungy.slangp)

EDIT: Preset deleted, as it was causing burn-in into my LCD display, and therefore might not be safe to use for others as well. Look at the following replies to see and get the new preset version.

1 Like

This is called “persistence” and is actually very common. It’s a result of voltage accumulation caused by on/off-every-other-frame flickering on certain panel types (IPS monitors are infamous for it). It’s indeed not permanent, but it takes awhile to resolve. I think there are some videos/animations you can play that will speed it along. Note: I don’t know if it can damage the monitor after a very long time, so YMMV.

You could probably replace the interlacing pass in that preset with the stock shader or some other basic scanlines to avoid the problem.

2 Likes

Thanks that’s good to know, now I know at least what to look for. I can live without interlacing and indeed, this was added by me recently as part of other presets and experimented with extreme values. Didn’t know this could happen as a consequence in such a short period of time. I’ll continue with my experimentation, if the interlacing was the problem for me here.

2 Likes

This is the new version of the preset, but tuned for my screen size at 1440p and for the core MojoZork. Could be better with grey-greenish background, but there is no way to change background independently. But that’s fine, this is “good enough” to distinguish it from all other Shaders I use.

Based on:

  1. shaders_slang/scanlines/shaders/res-independent-scanlines.slang
  2. shaders_slang/presets/crtsim-grungy.slangp

terminal_monitor.slangp:

shaders = "6"
feedback_pass = "0"
shader0 = "shaders_slang/scanlines/shaders/res-independent-scanlines.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "viewport"
scale_x0 = "1.000000"
scale_type_y0 = "viewport"
scale_y0 = "1.000000"
shader1 = "shaders_slang/crt/shaders/crtsim/composite.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
shader2 = "shaders_slang/misc/shaders/image-adjustment.slang"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "CRTPASS"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
shader3 = "shaders_slang/crt/shaders/crtsim/post-downsample.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = ""
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
shader4 = "shaders_slang/crt/shaders/crtsim/post-upsample.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
shader5 = "shaders_slang/crt/shaders/crtsim/present.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = ""
float_framebuffer5 = "false"
srgb_framebuffer5 = "false"
mask_weight = "1.000000"
autoscale = "1.000000"
Tuning_Persistence_R = "0.075000"
Tuning_Persistence_G = "0.060000"
Tuning_Persistence_B = "0.060000"
Tuning_Bleed = "1.000000"
Tuning_Artifacts = "1.000000"
NTSCArtifactScale = "200.000000"
ia_R = "0.000000"
ia_G = "1.400000"
ia_B = "0.300000"
ia_XPOS = "-0.020000"
bloom_scale_down = "0.010000"
BloomPower = "1.500000"
BloomScalar = "0.200000"
Tuning_Overscan = "1.000000"
Tuning_Barrel = "0.200000"
mask_toggle = "0.000000"
Tuning_Satur = "0.900000"
Tuning_Mask_Brightness = "0.600000"
Tuning_Mask_Opacity = "0.500000"
textures = "NTSCArtifactSampler;shadowMaskSampler"
NTSCArtifactSampler = "shaders_slang/crt/shaders/crtsim/artifacts.png"
NTSCArtifactSampler_wrap_mode = "clamp_to_border"
NTSCArtifactSampler_mipmap = "false"
shadowMaskSampler = "shaders_slang/crt/shaders/crtsim/mask.png"
shadowMaskSampler_wrap_mode = "clamp_to_border"
shadowMaskSampler_mipmap = "false"
3 Likes

If i remember correctly image sticking should go away if you run noise fullscreen for some time. https://www.shadertoy.com/view/ltB3zD

You can also add some slight noise to your shader which only changes color a little bit from frame to frame but is not visible for user.

2 Likes

This happens all the time with my IPS monitor. It doesn’t harm the monitor. It doesn’t occur with my TV.

The burn-in that affects OLEDs is permanent though.

2 Likes