I’ve made a completely blank Blueprint project based on this guide, so if you’re not making these changes for an existing project it could be worth using it to save headaches.
Unreal Engine 5, while powerful, unfortunately makes new developers feel completely out of control of how their game looks when they start a new project. So many simple games are using insanely advanced features like real-time global illumination and ray tracing when they have no reason to whatsoever. I don’t like how Epic has enabled unneccessary things like AI upscaling and temporal anti-aliasing by default, and it’s very poorly explained online how you actually change it. So here’s how to do it!
It’s best to do as much of this as possible by writing in your project’s Config/DefaultEngine.ini file, but unfortunately some of it must still be done in the Unreal Editor.
; Disable AA and TAA
r.AntiAliasingMethod=0
r.TemporalAA.Upsampling=0
r.TSR.ShadingRejection=0
r.TSR.History.GrandReprojection=0
r.TSR.Velocity.WeightClamping=0
Unreal 5’s default temporal anti-aliasing leads to a lot of ghosting and unwanted visual noise. It can be disabled by setting r.AntiAliasingMethod to 0, or you can specify 1 to use FXAA which is a much better-looking alternative that still reduces jagged edges.
r.DynamicGlobalIlluminationMethod=0
r.Lumen.GlobalIllumination=0
r.Lumen.Reflections=0
r.Lumen.ScreenProbeGather=0
Lumen is really nice in theory, but it uses a lot of temporal techniques and unfortunately in my opinion the technology just isn’t mature enough to reach expectations. You can keep it on if you like, it’s up to you.
The same goes for Nanite, auto LODs are a really cool idea but for the vast majority of projects it’s just unneccessary overhead.
With the Unreal Editor open, go to Project Settings -> Rendering -> Nanite and make sure it is unchecked. If you get a red error message in the editor later on, you need to make sure that Project Settings -> Rendering -> Generate Nanite Fallback Meshes is checked.
You should then search for all the Static Mesh files in your project, and then right click -> Asset Actions… -> Edit Selection in Property Matrix. Once you have the Property Matrix open, un-collapse Nanite settings and make sure Enabled is completely unchecked.
Ray tracing is cool, but ridiculously overkill for small game-dev projects.
With the Unreal Editor open, go to Project Settings -> Rendering and make sure that Support Hardware Ray Tracing is disabled.
r.DefaultFeature.MotionBlur=False
r.MotionBlur.Amount=0
r.DefaultFeature.MotionBlur=0
r.VelocityOutputPass=0
Motion blur is a sticking point for a lot of players, most people don’t mind it too much if it’s done well, but Unreal 5’s implementation of it leads to a lot of ghosting, so we’ll turn it off.
r.AmbientOcclusionTemporalBlendWeight=0
r.SSR.Temporal=0
r.SSR.HalfResSceneColor=0
r.PostProcessAAQuality=2
These are left-over features from the upscaling that we’re no longer using, so we’ll disable them.
r.Shadow.Virtual.Enable=0
r.VirtualTextures=False
r.TextureStreaming=False
These features are pretty new and also very overkill for a small project. If you have 10,000 textures and lots of lighting in your game this might be worth considering but for most projects, spending computing time on this will not be worth it. It’s worth noting that you can’t disable Virtual Shadow Maps if you still want to use Lumen.
r.Upscale.Quality=0
r.ScreenPercentage=100
r.SecondaryScreenPercentage.GameViewport=100
This feels really silly but in my experience has genuinely made a lot of difference. You can additionally set the percentages to 200, which will ‘supersample’ the rendering. This means the game is being drawn at a really crisp 4K and then downscaled if the player’s monitor isn’t big enough, reducing jagged edges.
This will be a much bigger consideration than the other options as it reduces the amount of lights you can have at one time, but it also allows for better anti-aliasing and (potentially) performance. Deferred rendering should be fine for the vast majority of projects, but you might want to read up on forward rendering to see if your game is simple enough to benefit from the performance gains.
If you want to use forward rendering, go to Project Settings -> Rendering -> Forward Renderer and make sure Forward Shading is checked.
Set the screen percentages to 50 or 25 as you see fit. Use the Property Matrix on all your textures and set Filtering -> Nearest and Mip Gen Settings -> No Mip Maps.
TODO: consider Shader Compilation Stutter?