Ah thanks for these links I’ll have a read. What are the other methods to 3D projection? I would have thought that is the only way to do this?
Maybe, the issue I mainly have is that most examples of curvature I see are really examples of what uncorrected severe pincushion distortion would look like.
That was never my experience playing games on a CRT. Even if playing on a curved CRT, my horizontal and vertical lines looked relatively straight going across the screen. Sideways scrolling didn’t look like things were going around a bulb or bulge like they do with most of the curvature presets I see at their default settings.
If viewing a curved screen from below the bottom would appear less curved than the top and vice versa.
So to summarize, the examples and implementations of curvature that I commonly see are exaggerated. They look a bit off in terms of perspective distortion as well.
I just can’t use them without getting a headache or motion sickness, probably because they feel very wrong to my brain.
So I feel as though there might be some room for improvement. Certainly in the geometric distortion correction department because I’m sure manufacturers would have worked to minimize geometric distortion before shipping their products and consumers were given the tools to do so as well at least in terms of monitors.
I do acknowledge that some mainly very old CRT TVs might have featured highly curved, bent, pincushioned, fishbowl like images but those would’ve been way before my time. The size of the TV might have also played a part in determining how bad this distortion due to curvature of the image looked.
Implementing the behaviour of types of controls should probably be the next step towards improving curvature emulation. This must be implemented in conjunction with independent screen and image curvature controls. The curvature of the screen would remain static, while the distortion caused by the curvature of the screen on the image wouldn’t be 1:1 due to the ability to minimize and correct said distortion in the image itself via these controls.
Take this random image that I borrowed from elsewhere in the forum for example. You can see the pincushion effect in all four corners and of course it also affects the center as well as all horizontal (and vertical) lines in the image. This is not the way I remember things in my extensive CRT experience. Those corner distortions could be easily fixed. The end result may not have been an absolutely perfectly straight, parallel, horizontal (or vertical) line but I hope you understand my point and the adjustment would’ve affected the entire image.
Thus screen curvature should not necessarily be equal to image curvature. After accounting for geometric distortion correction, image curvature could be a lot less (or a bit different) than screen curvature.
Once this is implemented correctly, all of the other anomalies created by the current implementations should fall into place.
The curvature of the screen can still be “suggested” by using things like @HyperspaceMadness’s Tube Diffuse Layer because light, shadows and reflections hitting the outside of the curved tube would be completely affected by its curved nature while being completely unaffected by the set’s geometry adjustments.
I think some people might be (incorrectly) using the curvature of the image and pincushion distortion to “suggest” that they’re not playing on a perfectly flat display because a perfectly flat would clearly be an inaccurate representation of a CRT’s image output in their minds.
So in concluding, nothing should be wrong with measuring and modeling the dimensions of the outside curvature of a CRT Screen and implementing it in a shader. What’s wrong is assuming that the final image projection is supposed to conform to the shape and dimensions of that physical screen glass model 1:1.
That’s where things need to be improved.
I just hate the moire that you inevitably get when using curvature. No good way to solve it.
So, with a CRT, you ideally want a 90-degree angle of incidence (I think that’s the term?) of the electron beam hitting the phosphor array for a number of reasons (sharpness, convergence, etc), and the curved surface helps with this as you move further from the center of the screen–which the gun hits perfectly without any steering.
However, nobody wants to see the curve because it looks bad, so you use pincushioning to correct for the barreling. This results in the image looking flat (ideally) at the cost of not using the entire surface. This is most noticeable at the cardinal directions, but it’s mostly covered up by bezel and overscan.
You can see some of it (and still some barreling) in this shot from my arcade cab.
So, yeah, the effects we typically make in shaders are what you would see on uncorrected CRTs and/or very small ones where you want to maximize the visible area at the cost of reduced correction.
Maybe after proper geometry distortion correction moire patterns might go away. I remember that being the case on computer monitors as moire patterns were “a thing” that I experienced particularly during adjustment time when switching to new resolutions for the first time.
Just a quick update on the latest version of my shader which one is the PVM? (Hopefully @Nesguy will like the pixel close up?)
Ok I’m sure for you pro’s its easy but its getting close, no? There are many things a bit off but its not bad.
I’m no pro but I’m guessing that the 1st image is your Shader and the second is the real PVM. It’s extremely close in that both look pretty similar in many respects, plus the limitations of photography might conceal some of the differences. It’s great that they both seem to do what we want them to do to the pixels. I have my reasons for my selection.
It definitely wasn’t easy for me to pick which one.
Very cool, getting close, I love the side by side 
Do you use the same fstop/aperture for the pictures?
Yes, very nice! With some tweaking I think it will be indistinguishable from the real thing. Getting very close.
One characteristic of Trinitron displays is that the individual phosphors will sometimes bleed completely over the scanlines (check out the blues in Link’s shield). I managed to capture this effect in my SoM shot; check out the reds. This is something you see on pretty much all Trinitrons except for BVMs. I think it makes for an even more dynamic and interesting image. This can be very easily achieved with some adjustment to the scanlines.
I like the little bit of deconvergence you added, too.
Sharpness seems a tad high compared to the real thing, but that’s easily fixed with some very slight gaussian blur.
Also, happy to see that no trace of the LCD pixel grid is visible in the shot of the LCD, that kills the illusion.
Excellent work.
Here’s a photo illustrating the phosphor bleed over scanlines, you can see it in the reds.
I didn’t see your picks @HyperspaceMadness & @Nesguy. Which is which? Before @MajorPainTheCactus gives us the answer.
1st one is the LCD based on the phosphor dynamics and edge sharpness.
Also if you look very closely there’s a bit of roughness to the phosphors in the first photo, owing to the lcd pixel structure, whereas the real phosphors are completely smooth. It’s very subtle.
It’s very impressive overall.
Here is a shot from my Sony Trinitron, as good as it gets with a cellphone camera. Nintendo Wii driving the Trinitron with an RGB scart. RetroArch and snes9x
I noticed these two qualities as well, however the first one has a more intense glow and saturation. The image is also slightly more smeared and out of focus which can easily be mistaken for analog bleeding and blending.
You’re absolutely right the first is my shader and the second is my PVM. Well done! 10 house points to all those who guessed correctly, spend them wisely.
So one thing I’ve changed in this shader is to use a mask that is: red, green, blue, black and let the HDR brightness make up for the darker overall image compared to the brighter but less accurate mask of red, yellow, cyan, blue.
I think this a better compromise for my 600TVL PVM than either RGB or RYCB masks as it gives the right shape to the phosphors and right density and arguably even a more correct layout as the PVM does seem to have a more prominent wire between each phosphor triad although my eyes might be making that up.
What is really off in my photos at least is the colour - I don’t think this is true in person BUT the reds are wrong in my shader for this comparison.
Also @Nesguy that’s a really great observation on the bleed. Just so I’ve got what you’re saying is right you are talking about the blue phosphors in his shield being overly elongated in the y direction?
@HyperspaceMadness no these images aren’t with the same ISO and shutter speed. I need to understand my phone’s pro mode better to see if I can use the same on both. It doesn’t work at all at the moment but that’s prob because my LCD is 120hz and my CRT is 60hz. I’ll post some more screenshots once I’ve got this done correctly.
@Cyber, @hunterk thanks for your detailed replies on curvature this is my next experiment - I’ve got plenty of questions for you as I’m still trying to get this all straight in my head.
Great confidence to put your shaders to the test like that!
This is very interesting. I wonder if this is something that @guest.r might consider adding to CRT-guest-advanced as this layout might be a better match for RGBW OLED Displays. It might also be an improvement for my 1440p Optimized Presets (which use RYCB) as well.
I’ve been able to achieve some acceptable (at least to my eyes) results using the standard RGB mask at full strength plus full strength scanlines in terms of brightness without HDR by using a touch of halation.
No problem, I’m glad this has finally been acknowledged and gotten the attention it deserves, so hopefully we’ll see some further development and improvements over the current implementations further down the road.
Exactly. In some cases you’ll see the phosphors extend completely over the black lines and form a solid vertical line with no gaps, it depends on a number of factors but in general the higher TVL Trinitrons don’t do this as much. On some lower TVL Trinitrons this effect is so pronounced that it looks like there aren’t any scanlines at all in parts of the image that are very bright.
Whatever effect is desired, it can be achieved by adjusting the maximum allowed beam width.
So here’s another try this time with exactly the same camera parameters (@HyperspaceMadness ): ISO 100, WB 3510K, Aperture Speed 1/60 and trying to get the focus as good as possible (at about 10cm from the screen or so).
I’ve tweaked the values in my shader a bit again but I kind of think I need different curves for the different channels.
One obvious thing to note is that I’ve maxed out my monitors brightness (700 cd/m2) and its way darker than my CRT! I think I’m going to need a bigger boat (brighter LCD - QD-OLED!?!).
Also I seem to be getting more reds in his green jacket - hmm not sure where this is coming from!
Because in your TV probably Green is more towards red, like olive green, while in PVM is close to blueish green. Probably Trinitron has different color temperature, more cold. If you look closely also hat has less red than your TV. And another, in the face, Trinitron has equal red and green but your tv red is about 2:1 (more warm).
Is this using Red, green, blue, black (RGBX)?
Maybe another shot using red, yellow, cyan, blue (RYCB) is in order.
RGBX is a 25% reduction in brightness compared to RYCB.
I’m not able to distinguish any black vertical lines separating the phosphors in the real CRT shot.
I think this is already at the point where you could fool even some dedicated CRT enthusiasts. Should post in some CRT forums and see if anyone notices.
Yes I totally agree with this and in fact the 240p test app is probably the best thing to use when trying to accurately replicate an actual CRT.
I do think this is key in getting the next level in realism as when I look at my CRT every part of the screen is subtly different which in turn enriches the resultant image.








