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?
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
https://youtu.be/bC-8y2R6IxI?t=166&si=D6K2v28RIR4bACQ3
...What?
>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?
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.
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.
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.
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.
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
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.
You can't accomplish this with a shader?
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.
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.
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.