Damn, that looks amazing! The CRT vibes are off the charts
Since there is a little performance hit, I implemented it as a static option; this means that the user who wants it has to edit config/config-user-optional.txt one time, then forget about it.
Makes sense since it is a system specific setting.
From docs-ng.md:
Antiburn protection
By enabling this options, shader will slowly shake the content over Y/X axis to
prevent image retention on affected screens like OLEDs.
To use it, in file config-user-optional.txt, write one or both:
#define ANTIBURN_Y 1.0
#define ANTIBURN_X 1.0
(1.0 is the effect speed).
Content will shake by half a scanline over the Y axis and by a full screen pixel over the X axis.
The default 1.0 speed is low so that you can hardly notice it, but you can safely use 0.5, 0.25 or even lower speeds for the antiburn effect to be effective.
Thanks man! This is huge but it’s one of those things that no one will appreciate or notice until it’s already too late. It happened to me. It’s was a slow burn. Didn’t notice until I had to sit closer to the screen after a move.
At first I was second guessing myself, wondering if it was just YouTube compression artifacts but the un-affected area outside of the 4:3 gameplay area gave it away.
Then I started checking up close when watching other content and the permanent scanline gaps were there.
Can the X axis movement be disabled independently or made optional? I’m asking this because I imagine it wouldn’t be compatible with subpixel “accurate” CRT Mask shaders and presets.
Wouldn’t it cause artifacts in some cases if the underlying subpixels change while the generated mask subpixel layouts remain static?
The second part to this is, will you be willing to add a universal, standalone version of this to RetroArch?
Yes:
It is compatible, because it is the content that shifts, not the horizontal mask.
For the very same reason, the X shifting would not work, because a post-pass would have no way to differentiate between content and mask.
For similar reasons, Y shifting would destroy anything that snaps to real screen pixels, like slotmasks or shadowmasks; also it would shake any bezel (Uborder, MegaBezel…).
(The latter problem could be worked out by moving the image by screen pixels quants (now it uses fraction of pixels and smooths the motion), but that could produce a jerky effect)
Hi @kokoko3k - I really wanted to thank you for your Slotmask TVL 410 and 500 presets - they are spectacular and extremely light - I’m already a fan of your VGA preset, now I’ve found these spectacular presets for consoles and arcades too, and I think I can finally turn my PC into a 360 degree retro gaming station. Thank you so much.
Ok, here are my current settings that I use on a 4k Sony OLED (so, output is set at 2160p on retroarch), using Game Mode setting and BFI lv2 on the Sony settings, for anyone that wants to take a look.
Shaders should be uptodate from the dev repo.
Depending on your panel, you may need to dial down “input signal” (if you’re not using a BFI type setting on your panel) and “saturation” slighty, and change "sharp X from -70 to -75 for a little more sharpness (personally, I’d prefer a setting of -72)…If you do change input signal, you may need to slighty adjust “gamma out”.
Edit: should add I use Vulkan.
Oky, I think I managed to solve the issue:
There is a new backdrop image under “textures” directory, namedd backdrop_superhero.jpg you can use in place of the default one.
You can take a look to the gimp psource roject I uploaded in the secondary repository too:
Please, have fun
Will take a look tomorrow and report back.
Ever so slighty tweaked settings uploaded (as per previous post, configured for 2160p)
Ok, finished tweaking…finally! On closer inspection, had a few things I needed to tweak further.
Let me know if anyone wants the new present (4k):
It still does look good on 1080p scaled down, so please, me
Cheers, will upload in the morning (uk time).
Here you go
Thanks! I’ve tweaked it to mitigate moire and gain a bit of sharpness on 1080p:
PIXELGRID_NO_INTERBLEED_H = "1.000000"
PIXELGRID_SIZE_W = "1.000000"
PIXELGRID_TVL_X = "625.000000"
IN_GLOW_GAMMA = "2.22"
GAMMA_OUT = "0.400000"
IN_GLOW_POWER = "1.999999"
IN_GLOW_BIAS = "0.500000"
IN_GLOW_WARPSHARP_X = "0.200000"
IN_GLOW_WARPSHARP_Y = "0.200000"
PIXELGRID_MIN_H = "0.300000"
PIXELGRID_MAX_H = "0.750000"
PIXELGRID_Y_MASK = "0.400000"
PIXELGRID_Y_MASK_SHIFT = "-0.010000"
~~…also raised TEMP from 6900 to 7500 due to my personal taste ~~
Nice! Which combo got rid of the last bit of moire?
There were 2 moire patterns intersecting.
-
first one due to scanlines; minimum scanlines was too low for 1080p with min->max gamma set to 5.0, so I’ve had to rise the minimum height, and to keep min->max proportions, I’ve raised the maximum height too. Still on scanlines, I’ve had to nullify “interline extra steepness”, because it produces very steep lines (moire).
…at least doing that made the picture brighter, so i’ve put the main signal gain down. -
second one due to the very high TVL, i just switched to screen coords.
Perfect - just made some minor tweaks on my 4k version, based on these 2 setting re moire, and now that’s done the trick. Nice!
You can easilly check for moire by using the: “show test pattern” parameter set to 9:00
Yeah, all done.
20 characters lol.
Hey, I think i managed to fix that, please, check in the dev repo.