Rendered at 10:15:46 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
user68858788 16 hours ago [-]
Interesting article. I hope their engine gets to the point where it actually looks like CRT instead of the blocky filters we see nowadays.
Here’s an entertaining video showing the difference in retro games on crt and lcd screens. It’s pretty incredible if you aren’t aware. Games back then were designed on CRTs and can look awful on LCDs in comparison.
>But a CRT isn’t a camera filming the world. Its a physical device that generates an image as an output of physical process. [...] That’s not a post-process overlay or filter effect, its an entirely different mental model of what it means to draw or render an image. I think this is why I struggled when trying to bolt this onto a modern engine. The foundations between the two models is just so fundamentally different. At this point, I was already beginning to consider my options. I was half inclined to give up.
An LCD or an OLED are also not cameras. I honestly don't understand what insight this person believes they've stumbled upon.
This is also very mystifying:
>The frame is never a single instant, its a culmination of integrations over time.
Strictly speaking, a CRT doesn't understand frames. It just fires whatever intensity of electrons is indicated by an analog signal at any given time as the magnets steer the beam across the screen in whatever pattern has been designed into them. If the tube is controlled by a digital source, there will likely be some kind of framebuffer of some size somewhere on the pipeline that stores at least a full scanline, and nowadays invariably a complete frame, so a DAC can convert the values in it to the analog signal expected by the gun.
The entire article supposedly addresses the "why", but after getting to the end, I still don't understand the why. What's wrong with Unity or Unreal architecturally that this guy's engine addresses?
nazgulsenpai 15 hours ago [-]
From my understand after reading, he's suggesting that Unreal and Unity's post processing are just applying effects to a camera/rendered frame, when what he wanted to do is simulate the CRT itself across the renderer to the frame that hits the swapchain.
fluoridation 14 hours ago [-]
But that's nonsensical. The CRT doesn't see the graphics pipeline of, say, an SNES, it just sees an analog signal. The graphics processing is done in the digital realm, not in the analog realm. If you want to simulate a CRT, all you need is a physical model and a digital image to display, which can come from Unreal, Unity, or whatever any other engine or program or whatever. It makes literally zero sense to write an entire engine to implement a CRT simulation.
spencerflem 14 hours ago [-]
Yeah I’m with you. Hate to assume such things but with how much AI spam is out there on programmer blogs these days I kinda just give up reading the blog post once something becomes confusing. Most of the time there’s not any insight to be learned by investigating deeper.
This one also has a lot of Its not X, its Y type phrasing
slopinthebag 12 hours ago [-]
Mmm, while this person's articles are clearly AI written, they do make some sense. Their renderer keeps samples the previous frame to achieve the effect, which of course is totally possible to do in Unreal or Unity but they also seem to have their own lighting and PBR models, which might be a bit harder to achieve.
>Lighting systems are designed to remain readable under CRT-style color quantization. Sprite and mesh pipelines emphasize bold shapes and strong contrast. Even debugging tools in the engine, like the grid overlays and scene visualization systems, exist partly to help developers maintain spatial clarity and composition.
This is AI nonsense but it could be a summarisation of something real.
panxm 13 hours ago [-]
[dead]
PowerElectronix 17 hours ago [-]
My advice to anyone even minimally interested in retro games or just clear motion in the image is to get a cheap crt monitor and play a bit with it. You'll surely will appreciate that even against today monitors they hold their ground very well (not in brightness, though) and easily surpass them in motion clarity.
We did lose quite a lot when we trasitioned to lcd screens.
nkrisc 15 hours ago [-]
I distinctly remember gaming on CRTs and then LCD screens and it was night and day difference, in favor of LCD. Monitors have only gotten better and I certainly don’t miss CRTs, least of all how hot they were.
superxpro12 15 hours ago [-]
I'm curious what the primary causes of that are. Like, I had a similiar experience growing up in the 90's. I think it was just the sheer increase in resolution. Text looked so much better, and you could fit more on a screen.
And then they got BIGGER.
Fr0styMatt88 14 hours ago [-]
Same here, I very distinctly remember the first time I got to use desktop-class LCD monitors (it was at a new job at the time) and four things stood out:
- The screen size. Going from a 17” or maybe 19” CRT at home to a 19” LCD but without the CRT bezel — the screen looked HUGE.
- The clarity and flatness. The lack of smudging on text, the consistent geometry, being able to see the screen edge right up to the bezel without any wasted space (which you often had on a CRT if you wanted an image without excessive pincushion / bulge).
- The relative lack of ghosting when compared to laptop LCD screens I’d used in the past.
- The colour gamut. Looking back I think those monitors I first saw were relatively wide gamut monitors being used with Windows XP and no colour profiles. The colour saturation was impressive (not accurate, but striking).
I never remember CRTs looking better than any desktop LCD from that point on overall, but I dare say I just didn’t have access to any high-end CRTs at the time.
I also never remember CRTs having true black levels close to OLED, which is another thing I hear people say sometimes. I mean you could get deep blacks, but you’d be sacrificing brightness and white/gray detail at the white end. Again though might have just been the CRTs I knew of at the time.
khedoros1 13 hours ago [-]
I went from a 19" CRT capable of 1600x1200@75Hz to a 17" LCD capable of 1280x1024@60Hz, basically because that CRT would've taken up a huge chunk of desk real estate in my dorm.
My first impressions were that the screen was bright as hell, sharp (but I was torn on whether that was good or bad, given the blockiness that it introduced), thin and light (awesome!), and sucked to run at anything but the native resolution. After a few hours, I realized that my eyes weren't getting tired looking at it, and that it was nice not to have the subtle hum around anymore.
The CRT was a decent screen (for 1999), and the LCD was a decent screen (for 2003). Of course, I just got used to the differences, since the LCD was much more practical in my life. I still have it in storage right now.
fluoridation 14 hours ago [-]
You forgot one thing: flickering. At 60 Hz, a CRT is murder on the eyes. A few years ago I used a CRT for the first time in like ten years and my eyes hurt almost immediately.
Fr0styMatt88 14 hours ago [-]
I was never incredibly disturbed by 60Hz though I did notice it.
You reminded me of something I had forgotten though — remember when 100Hz / 120Hz TVs first became a thing? That I noticed!
I think most of my PC CRTs ran at 72Hz / 75Hz IIRC. At least with the monitor I had I remember pushing it to 90Hz but that would add bluriness / lose clarity so I never used it at that rate.
maybewhenthesun 14 hours ago [-]
Agreed a 100% CRTS were wobbly flickery mess. Especially in the 60Hz era. Everyhting below 90Hz on a crt gave me horrible migraines when working longer than 4 hours.
LCDs that were just constantly lit were so much easier on the eyes than a CRT where every bright pixel is flashing at 60Hz.
But one thing is true: a low res game designed to look good on a CRT looks much worse on a low res LCD. CRTs being a blurry mess gave you free 'antialiasing'.
Keyframe 14 hours ago [-]
I'm a _bit of a snob_ when it comes to that both due to my film & tv background as well as my game collection (jesus, that's a lot of games including full snes, n64 sets, mega drive, nes, etc). I have various broadcast monitors from PVMs to BVMs as well as some of the finest consumer ones including B&O etc. I can say that now with ultrafast OLEDs (240Hz) we're 95% there now, finally. With high quality shaders or hardware gadgets it's really nice. For that 5% more I think those things like ultra high DPI OLEDs and phosphor dot level emulation shaders with black frame insertions will get us there. Until then - good ol' Trinitron is still superb choice if you want 100%. Another thing, outside of actual display is that old console + CRT are almost zero lag input to screen experiences which I actually think plays significant role in the overall experience.
freedomben 16 hours ago [-]
Very interesting. I grew up with CRTs and didn't even use an LCD screen until in my 20s. It felt magical. Then LED screens (especially the black of OLED) felt even more magical. I've never considered that CRTs might have been superior for some things.
I do remember playing some NES games on emulators on LED screens and thinking the weather effects and such looked pretty bad compared to the CRT experience I remembered, but hadn't gone much deeper than that. I'll have to try and find a CRT and do some tests
Insanity 16 hours ago [-]
I started out gaming on CRTs in the late 90s. Moved to LCD in the mid-2000s and haven't looked back. I don't miss CRTs, not least the bulkiness of them lol.
freedomben 13 hours ago [-]
For real haha. I remember helping my dad move his old big screen TV out of his house when he replaced it with a "flat screen" and holy hell, it beat the hell out of 4 of us and we only had to take it 100 feet. The bulk was something I'm the young will never be able to appreciate :-D
ramesh31 17 hours ago [-]
You can't accomplish this with a shader?
wallstop 16 hours ago [-]
From my experience with game engines and people that really care about CRTs - I believe the effect (confidence: 95%) can be entirely achieved with rendering glue in any of the modern game engines - Unreal, Unity, Godot, etc. Now, whether or not it is a literal shader, or a shader + custom sauce, not sure.
However, I have not tried, so I cannot verify that claim to 100% accuracy. The author ...might have tried? They definitely surveyed the landscape. My read of the article was that they went down this rabbit hole and back-justified it instead of investing a similar amount of time in a practical solution in a modern engine.
CRT look and feel is a niche full of very passionate and opinionated people.
danwilsonthomas 14 hours ago [-]
I've done a version of this in Godot. It's kind of a hack, but it works and it's all Nodes without needing a script. You could do it more easily in a compositor effect but you have to deal more with the guts of the engine.
The basic idea was to use a chain of Viewports and TextureRects using the previous ViewportTexture to do the effect. This is essentially just setting up a chain of framebuffers that I can draw on top of at each step. The first step just does a simple calculation to convert the incoming color to an "energy" value with a simple shader on the whole frame. Then there are two decay viewports that feed each other to decay the old frame and overlay the new one. These just have a decay parameter that I can tweak to get different effects. There's a final Viewport that supersamples everything because I'm going for more of a vector display look than a CRT. And I can layer on other effects at either the energy state (like decaying phoshpor) or at the final stage (like flicker or screen curve).
Here I've exaggerated the decay quite a bit so you can see the effect. https://www.youtube.com/watch?v=2ZrvcZIfqOI The trails there are entirely from this effect. I'm only rendering the spinning figure. You can also see where lines overlap they are brighter than the surrounding lines because I cap the maximum energy value in the first layer.
user68858788 16 hours ago [-]
Do you have an example? I’ve done a slightly-more-than-casual search for convincing post-processing and haven’t found success. Filters still tend to retain the sharpness of pixel edges in a way that CRTs don’t, and the contrast doesn’t look right either.
wallstop 15 hours ago [-]
I'm not saying the tech currently exists in a form you can just plop into a project and have it give you the exact CRT look and feel that you want. What I am saying is that you can do that within any modern game engine - you just have to decide what, exactly, the look and feel you want is and how to get there.
As an example, I will quote the article:
> Retro Game Engine owns the full frame lifecycle. I decide what the input signals are, what the display does with it, how time affects it, what gets presented and when.
You can replace "Retro Game Engine" in that sentence with "Unity" or "Godot" and it is just as true.
jpadkins 14 hours ago [-]
Balatro is a good example. Lots of different opinions on whether its a good CRT effect or not.
fluoridation 14 hours ago [-]
Still the best CRT simulation I've seen is in an X screensaver called XAnalogTV. It simulates both CRT artifacts as well as NTSC channel cross-talk and analog interference. It amazes me that still no one has produced a portable version.
Here’s an entertaining video showing the difference in retro games on crt and lcd screens. It’s pretty incredible if you aren’t aware. Games back then were designed on CRTs and can look awful on LCDs in comparison.
https://youtu.be/bC-8y2R6IxI?t=166&si=D6K2v28RIR4bACQ3
>But a CRT isn’t a camera filming the world. Its a physical device that generates an image as an output of physical process. [...] That’s not a post-process overlay or filter effect, its an entirely different mental model of what it means to draw or render an image. I think this is why I struggled when trying to bolt this onto a modern engine. The foundations between the two models is just so fundamentally different. At this point, I was already beginning to consider my options. I was half inclined to give up.
An LCD or an OLED are also not cameras. I honestly don't understand what insight this person believes they've stumbled upon.
This is also very mystifying:
>The frame is never a single instant, its a culmination of integrations over time.
Strictly speaking, a CRT doesn't understand frames. It just fires whatever intensity of electrons is indicated by an analog signal at any given time as the magnets steer the beam across the screen in whatever pattern has been designed into them. If the tube is controlled by a digital source, there will likely be some kind of framebuffer of some size somewhere on the pipeline that stores at least a full scanline, and nowadays invariably a complete frame, so a DAC can convert the values in it to the analog signal expected by the gun.
The entire article supposedly addresses the "why", but after getting to the end, I still don't understand the why. What's wrong with Unity or Unreal architecturally that this guy's engine addresses?
This one also has a lot of Its not X, its Y type phrasing
>Lighting systems are designed to remain readable under CRT-style color quantization. Sprite and mesh pipelines emphasize bold shapes and strong contrast. Even debugging tools in the engine, like the grid overlays and scene visualization systems, exist partly to help developers maintain spatial clarity and composition.
This is AI nonsense but it could be a summarisation of something real.
We did lose quite a lot when we trasitioned to lcd screens.
And then they got BIGGER.
- The screen size. Going from a 17” or maybe 19” CRT at home to a 19” LCD but without the CRT bezel — the screen looked HUGE.
- The clarity and flatness. The lack of smudging on text, the consistent geometry, being able to see the screen edge right up to the bezel without any wasted space (which you often had on a CRT if you wanted an image without excessive pincushion / bulge).
- The relative lack of ghosting when compared to laptop LCD screens I’d used in the past.
- The colour gamut. Looking back I think those monitors I first saw were relatively wide gamut monitors being used with Windows XP and no colour profiles. The colour saturation was impressive (not accurate, but striking).
I never remember CRTs looking better than any desktop LCD from that point on overall, but I dare say I just didn’t have access to any high-end CRTs at the time.
I also never remember CRTs having true black levels close to OLED, which is another thing I hear people say sometimes. I mean you could get deep blacks, but you’d be sacrificing brightness and white/gray detail at the white end. Again though might have just been the CRTs I knew of at the time.
My first impressions were that the screen was bright as hell, sharp (but I was torn on whether that was good or bad, given the blockiness that it introduced), thin and light (awesome!), and sucked to run at anything but the native resolution. After a few hours, I realized that my eyes weren't getting tired looking at it, and that it was nice not to have the subtle hum around anymore.
The CRT was a decent screen (for 1999), and the LCD was a decent screen (for 2003). Of course, I just got used to the differences, since the LCD was much more practical in my life. I still have it in storage right now.
You reminded me of something I had forgotten though — remember when 100Hz / 120Hz TVs first became a thing? That I noticed!
I think most of my PC CRTs ran at 72Hz / 75Hz IIRC. At least with the monitor I had I remember pushing it to 90Hz but that would add bluriness / lose clarity so I never used it at that rate.
LCDs that were just constantly lit were so much easier on the eyes than a CRT where every bright pixel is flashing at 60Hz.
But one thing is true: a low res game designed to look good on a CRT looks much worse on a low res LCD. CRTs being a blurry mess gave you free 'antialiasing'.
I do remember playing some NES games on emulators on LED screens and thinking the weather effects and such looked pretty bad compared to the CRT experience I remembered, but hadn't gone much deeper than that. I'll have to try and find a CRT and do some tests
However, I have not tried, so I cannot verify that claim to 100% accuracy. The author ...might have tried? They definitely surveyed the landscape. My read of the article was that they went down this rabbit hole and back-justified it instead of investing a similar amount of time in a practical solution in a modern engine.
CRT look and feel is a niche full of very passionate and opinionated people.
The basic idea was to use a chain of Viewports and TextureRects using the previous ViewportTexture to do the effect. This is essentially just setting up a chain of framebuffers that I can draw on top of at each step. The first step just does a simple calculation to convert the incoming color to an "energy" value with a simple shader on the whole frame. Then there are two decay viewports that feed each other to decay the old frame and overlay the new one. These just have a decay parameter that I can tweak to get different effects. There's a final Viewport that supersamples everything because I'm going for more of a vector display look than a CRT. And I can layer on other effects at either the energy state (like decaying phoshpor) or at the final stage (like flicker or screen curve).
Here I've exaggerated the decay quite a bit so you can see the effect. https://www.youtube.com/watch?v=2ZrvcZIfqOI The trails there are entirely from this effect. I'm only rendering the spinning figure. You can also see where lines overlap they are brighter than the surrounding lines because I cap the maximum energy value in the first layer.
As an example, I will quote the article:
> Retro Game Engine owns the full frame lifecycle. I decide what the input signals are, what the display does with it, how time affects it, what gets presented and when.
You can replace "Retro Game Engine" in that sentence with "Unity" or "Godot" and it is just as true.