Emulate a CRT screen with ReShade for your pixel-based games
Why? In recent years, there has been a bit of a nostalgia boom for older CRT displays, sort of in the same vein as vinyls over CDs and digital music, and people have been rediscovering the...
Why?
In recent years, there has been a bit of a nostalgia boom for older CRT displays, sort of in the same vein as vinyls over CDs and digital music, and people have been rediscovering the technology.
But something else that people have been rediscovering is that many older titles, from the NES all the way up to the PS2 era, were designed for CRT screens specifically. So much so that the graphical artistry can change entirely! A Twitter account called CRT Pixels has been documenting the difference across many games and the differences can be dramatic. Where LCD screens show each pixel exactly, the nature of CRT displays meant colours shifted and blended into each other and game artists of the time knew, tested for, and took advantage of this to create some amazing visuals.
Sometimes you get the proper colours.
Sometimes you get proper texture detail out of the image.
Sometimes the background details come together and you see what it really was supposed to look like.
Sometimes you'll see the characters actually have expressions on their faces.
Sometimes you get the proper image entirely.
Even in early 3D games, you'll see some pretty significant differences.
Of course, it's not always good but such is the tradeoff. CRTs were blurry by nature and smaller objects will always look less crisp and clear than clean pixel representation. Ultimately it's all a matter of preference. But that doesn't mean trying it out to see if you like it or not should be difficult.
Many emulators come with CRT emulating shaders built-in and support additional ones. But what about native PC games? We've seen a plethora of 2D indie games over the last decade, many going after the older nostalgic styles. Why not try them through a CRT filter and see if they hit that nostalgia button even harder?
I've noticed that a lot of pixel-like or "low-res" indie games look pretty sharp. Too sharp. I wondered what it would be like if they were displayed on CRTs and, through this emulation method, I've come to really prefer it for the majority of pixel graphic games out there. Even games that are going after this new trend of PS1/N64 era graphics like DUSK seem to benefit some from it!
Tools
There are only two things you need to get started on Windows:
Linux
Unfortunately I'm not able to offer much by way of help to Linux users but from what I gathered this is also possible. It will take a little more elbow grease to get Linux's equivalent of ReShade going.
If you're on Linux, you can use vkBasalt instead of Reshade. It's a ground-up post-processing solution like Reshade made for Linux that is mostly compatible with Reshade shaders. I'm not able to test this myself so I can't offer any guidance on setting it up with this particular CRT filter directly. There are some guides involving this, MangoHUD, and GOverlay on reddit's r/linux_gaming that go into more detail on installing this solution.
Setting it up
It's pretty easy! The basic gist is that you will be adding a few files and folders to your game installation folder. I've gone into a lot of detail in these steps but once you go through them, you'll see it's pretty simple. You'll be able to apply it to a new game in less than a minute!
ReShade is not a program you install on your computer! Instead that .exe file is an automated tool that will place the necessary .dll, .ini, and shader files into your game installation.
- Open ReShade and click on the big button that says "Click here to select a game and manage its Reshade installation"
- You will see a list of applications installed on your computer. Select your desired game and click "Use selected application", or use "Browse" and manually navigate to the game's .exe file. I recommend going for Browse immediately, this list can take forever to finish loading.
- On the next screen, it will ask you what rendering API the game uses between DirectX 9, 10/11/12, OpenGL, or Vulkan. Select the proper one. If you are unsure, check PCGamingWiki, you will find it near the end of any game's page under "Other information".
- The final screen will ask you which effect packages you'd like to install. ReShade supports all kinds of postprocessing effects but we won't worry about any of them. Install only the Standard effects so that we get some basic support. Once you hit OK, you're all done with ReShade.
- Navigate to your game's folder and you will see that ReShade has added a few files (dxgi.dll, dxgi.log, ReShade.ini) and a new folder (reshade-shaders).
- Open the .zip you downloaded from the CRT Royale GitHub page and drag the reshade-shaders folder inside that archive into your game installation folder. The files will move and nothing should be overwritten.
- When you launch the game, you should see a notice at the top that Reshade is running. Press Home to bring up the ReShade menu. You'll see a prompt to view a Tutorial to using it. Try it if you like! Otherwise, we can skip it for now. You will then see a list of installed effects (.fx files). Enable CRT_Royale, and it will load immediately.
You're basically done now! The filter will load with its stock settings. Of course, depending on your hardware and personal preferences, you may need to adjust the settings that pop up in the lower portion of the ReShade panel there.
One thing that you may need to address immediately is a severe shake to the screen. This is caused by the Interlacing setting running on a high resolution input on a modern LCD screen. Interlacing is a key part of what gives CRT screens the look they have so disabling it is not my recommendation. Instead, we offset the shake with its options. To stop the shake, increase the Scanline Blend Strength. On my monitor, the shake is quite severe so I set this to a maximum 1.0, and then adjust the Scanline Blend Gamma up to 0.95 to counter the slight darkening this introduces.
Configuring the CRT filter
These instructions are specific to CRT Royale. I chose to use CRT Royale as it is perhaps the most feature-filled CRT emulating shader out there, and is generally the most flexible. There are many other CRT shaders out there that may serve your particular purposes or desires better, especially if you want to recreate certain artifacts from NTSC or PAL signals.
In that last screenshot, you'll see all of the main factors to configure.
Generally, the stock configuration is pretty good! The vast majority of changes you can make are to your own personal preference or even memory of what CRTs were like. You can hover almost all the settings bars to get a good description of what part of the CRT technology the setting emulates.
Here's a selection of the options that you may want to consider playing around with:
- Mask Sample Mode: Choose between Lanczos or Point. This is entirely preferential and can change game by game!
- Mask Size Param: This is effectively the resolution of the CRT display. You can choose between Triad Width or Number of Triads Across, corresponding to the following two settings. If you want a higher resolution screen, or are going after a specific look, try adjusting these settings.
- CRT Gamma or LCD Gamma: Feel free to adjust these if you find the CRT filter makes the game too dark for your liking.
- Halation: This adjusts the emulation how inaccurate the phosphors of a CRT could be! Trying to go after a cheap, busted display from your youth where colours were unsaturated as all heck? Here's the option to get that effect!
- Diffusion: The refraction effect of the glass on CRT displays. Having none basically means you can see all the triads of the CRT technology, the refraction is part of what gives CRTs there "warm" look.
- Geom mode: The screen shape! Was your CRT curved? Flat? Maybe you had the Trinitron cylinder style? This will adjust the display to emulate the effect of playing on differently shaped CRT screens. The next few options under it give you the ability to tweak this further, if desired.
- Border size: The size of the black borders around the screen. I turn this off, this was always my least favourite thing about CRT screens but if you're trying to introduce and adjust that CRT style screen border, use this and the next few settings.
That's it
And that's all you need to try it out, really! I recommend giving it a shot to see if it works for you. It can take a few minutes but if you're like me and find some 2D games look a bit too sharp, the colours don't transition very well, or that the foreground objects stick out a little too obviously then the CRT filter might help it out.
I made a quick album using another 2D pixel graphics game called Blasphemous using the CRT filter. It was the game that finally inspired me to try this out and I think it fits the aesthetic of the game so much better. Things look that much gloomier and contrasted, and the softness added to characters and environments help them seem a bit less "video gamey" to me. Keep in mind that the CRT emulation effect looks a bit odd in still images as it's an effect that is in a constant state of flux.