Great, looking forward to play with it. Do you think the glass refraction would have an effect on the perceived curvature?
This might be the first curvature shader I would be happy to use The other ones all just felt off for me.
Is it even possible to have curvature without moire? I think some slight curvature a la torridgristle’s shader could give the image a more analog look and help with immersion, but moire kinda kills it for me
No, it’s like uneven scanlines: it’s a manifestation of aliasing and you can minimize it but there’s no escaping it. It occurs on actual CRTs, as well, though it’s caused by different things: http://www.displaymate.com/moire.html
Or alternatively (if RetroArch currently supports it) – an odd-numbered sequence of refresh cycles (e.g. 60fps @ 180Hz using 2:1 or 1:2 BFI:Visible ratio), or repeat-refresh (e.g. 60fps @ 240Hz BFI using 2:2 BFI:Visible ratio).
That is an alternative to fix the inversion artifacts too without needing an even-numbered integer scale, for emulators that support these odd BFI ratios (2:1, 1:2, or 2:2) instead of the usual BFI (1:1 50%:50% black:visible ratios). That fixes accidental interactions with software blackframe insertion with inversion/FRC/temporal dither algorithms.
The technical explanation why is moved into this thread.
Yeah, EWA. I haven’t made an EWA version of it yet but it should work fine.
@torridgristle Could you post the new curvature shader code? I’d try to implement it myself, but I only followed/understood half/fourth of what you said.
I’ve been wanting to check it out, and I’ve been watching both GLSL and slang repos.
I think this is pretty much nailing it.
Reference shot, Sony PVM (Can anyone confirm this is a PVM and not a regular Trinitron? Kinda looks like a regular Trinitron to me):
My shader settings (photos taken with my phone camera):
Here are the settings. I’m also using black frame insertion and have my backlight cranked up, so brightness and gamma will look off otherwise (hence the photos taken with my phone camera). TVL is around 400-500, slightly higher than the reference shot (which makes me think the reference shot is actually a regular Trinitron TV and not a PVM)
alias0 = ""
BRIGHTNESS = "1.750000"
filter_linear0 = "false"
float_framebuffer0 = "false"
GAMMA_INPUT = "2.700000"
GAMMA_OUTPUT = "2.400000"
GLOW_DIFFUSION = "0.050000"
GLOW_HALATION = "0.100000"
GLOW_HEIGHT = "0.500000"
GLOW_WIDTH = "0.500000"
MASK_COLORS = "2.000000"
MASK_SIZE = "1.000000"
MASK_STRENGTH = "0.150000"
mipmap_input0 = "false"
parameters = "SHARPNESS_IMAGE;SHARPNESS_EDGES;GLOW_WIDTH;GLOW_HEIGHT;GLOW_HALATION;GLOW_DIFFUSION;MASK_COLORS;MASK_STRENGTH;MASK_SIZE;SCANLINE_SIZE_MIN;SCANLINE_SIZE_MAX;SCANLINE_SHAPE;SCANLINE_OFFSET;GAMMA_INPUT;GAMMA_OUTPUT;BRIGHTNESS"
SCANLINE_OFFSET = "0.000000"
SCANLINE_SHAPE = "1.000000"
SCANLINE_SIZE_MAX = "1.500000"
SCANLINE_SIZE_MIN = "0.500000"
shader0 = "C:\Program Files\RetroArch\shaders\shaders_glsl\crt\shaders\crt-aperture.glsl"
shaders = "1"
SHARPNESS_EDGES = "2.000000"
SHARPNESS_IMAGE = "1.000000"
srgb_framebuffer0 = "false"
wrap_mode0 = "clamp_to_border"
EDIT: Nothing to see here, lol.
Nice, screenshots.
Some experiments with “slot mask” and minimal diffusion bloom.
1 https://pasteboard.co/Ij8nHld.png
2 https://pasteboard.co/Ij8oePX.png
That new curvature is looking great, not the biggest fan of EWA though (it makes makes me feel as I’ve rubbed Vaseline on my screen), lol. Is it possible to get version of this in Lottes, Hyllian, Apeture, or something (doesn’t necessarily need to be part of the repo)? I’d just really like to see in nearest neighbor.
Regardless, thanks for all your hard work guys!
I put it into ewa because I try not to change people’s code too much without their permission/support. The curvature block from ewa can drop right into lottes, though, as I purposely used the same function names, etc.
That’s understandable, thank you for the reply.
I’ll try to port it over later, if I can’t get it to work I may message you with whatever I have done to try and trouble-shoot. If that’s alright with you?
EDIT: Figured it out, you’re definitely right about it just dropping in. The only change I had to do besides just dropping the code in, was move vec2 Distortion into the Warp code (this was for GLSL though, probably could’ve left it be for Slang).
After all these years, CRT-Geom still looks fantastic. In fact, only CRT-Aperture is better in terms of ease of use and objective picture quality, IMO. I prefer a slightly sharper image than what CRT-Geom provides on the middle sharpness setting, but I don’t like how sharp it is on the sharpest setting, either. Still, CRT-Geom is a good alternative to CRT-Aperture if you prefer a slightly softer/lower-res look.
Disclaimer: brightness and gamma are different in person because I’m using black frame insertion and maxing out my backlight. A backlight/brightness setting of 50% on most LED-lit LCDs should give an approximate idea of what I’m seeing on my display.
CRT-Geom with my preferred settings:
CRT-Aperture with my preferred settings:
Settings, CRT-Geom:
alias0 = ""
cornersize = "0.001000"
cornersmooth = "1000.000000"
CRTgamma = "2.500000"
CURVATURE = "0.000000"
d = "1.600000"
DOTMASK = "0.300000"
filter_linear0 = "false"
float_framebuffer0 = "false"
interlace_detect = "1.000000"
lum = "0.650000"
mipmap_input0 = "false"
monitorgamma = "2.200000"
overscan_x = "100.000000"
overscan_y = "100.000000"
parameters = "CRTgamma;monitorgamma;d;CURVATURE;R;cornersize;cornersmooth;x_tilt;y_tilt;overscan_x;overscan_y;DOTMASK;SHARPER;scanline_weight;lum;interlace_detect"
R = "6.599996"
scanline_weight = "0.300000"
shader0 = "C:\Program Files\RetroArch\shaders\shaders_glsl\crt\shaders\crt-geom.glsl"
shaders = "1"
SHARPER = "2.000000"
srgb_framebuffer0 = "false"
wrap_mode0 = "clamp_to_border"
x_tilt = "0.000000"
y_tilt = "0.000000"
Settings, CRT-Aperture:
See my previous post.
Any programmers in this topic that could take a look at this issue?
Thought I would bring it up here since the main thing that bothers me about it is that CRT shaders end up looking pretty bad when you use them on rotated vertical games in FB Neo. This comparison shows it well: http://screenshotcomparison.com/comparison/701
With the mouse off the image it shows MAME using crt-guest-dr-venom with the shader’s TATE mode on. Mousing over the image shows FB Neo with TATE off. The first one looks good because the rotation is done using the MAME core’s software rotation. That doesn’t also rotate shaders, but if the shader has a rotation option, it works pretty well. FB Neo uses RetroArch’s rotation API. It rotates shaders, but for some reason it looks bad. Something with the scaling or alignment maybe?
Hello, hope someone can help me.
Crt-royale is said to be 4k friendly, however there is noticeable difference between 1080 and 4k resolutions and not in 4k favor. With 4k everything looks more blocky with less color bleed, overall shader intensity appears to be reduced. At 1080 image looks infinitely better and I can achieve similar results with 4k display if I force 1080 res in retroarch settings. So perhaps there are some settings in shader itself I need to change to make 4k comparable?
This pic from this thread on retrogameboards caught my atention.
Can you guys elaborate on why it looks so green or suggest a preset that comes closer to what colors on the CRT look like? I just booted it on retroarch to confirm it looks like the capture (it looks even greener on blastem core).