FXAA, SMAA, TAA, MSAA. Four options to choose from and this is just anti-aliasing we’re talking about. There’s Ambient Occlusion, Screen Space Reflections, Shadows, Texture Filtering, Post-Processing and much more. What do all these graphics settings do, and more importantly how they impact the visual fidelity in your favorite games? Let’s find out!
Let’s start off with anti-aliasing. It’s one of the most widely used effects in games. You’ve got the traditional MSAA, SSAA, FXAA and the newer shader-based techniques: SMAA and TAA that have become the norm. So, what does anti-aliasing do? In short, they give the image a cleaner look by removing the rough or jagged edges around objects.
Here’s an example of how FXAA (fast approximate anti-aliasing) improves the image quality by reducing the jaggies. Enlarge the images and see how the second one is notably smoother. Here’s another comparison of how AA impacts your game. Here you can see SMAA in action:
The differences are subtle but across the entire image. Check the electric pole and the wiring. They lose the teeth on the edges when SMAA is turned on. The buntings and the vegetation also get the same treatment. However, unlike FXAA, SMAA isn’t too strong. It gets rid of the aliasing, without reducing the texture detail.
There are two main types of anti-aliasing techniques:
Sampling-based: These mainly include MSAA (Multi-Sampling AA) and SSAA (Super Sampling AA) which were popular last-gen and for good reason. They produce the best image quality (broadly speaking) but the performance hit is severe. They work by rendering the image at a higher resolution and then scaling it down to fit the native resolution. This essentially makes the entire image more detailed and sharper, scaling down the rough edges in the process but not removing them entirely. Here’s an example:
Shader based: Shader based AA techniques are more efficient and don’t impact the performance by much. They work by applying a slight blur to the edges, making the image smoother but at the same time reducing the sharpness. FXAA is a good example of how shader based AA gets rid of aliasing but at the same time reduces the level of detail by blurring the finer details.
Newer methods such as SMAA greatly reduce the blur intensity while also eating up most of the jaggies. However, it suffers from the same drawback as MSAA: It doesn’t work with transparent textures. The latest and most popular form of AA is temporal anti-aliasing. TAA focuses on removing temporal aliasing or shimmering. It’s most evident in motion. Temporal aliasing is caused when the frame rate is too low compared to the transition speed of the objects in the scene. This makes the boundaries of the objects appear in motion. Here’s a comparison of TAA vs no AA:
TAA works by comparing consecutive frames and projecting the present frame onto the previous one. The two are blended in an accumulation buffer, giving a smoother approximated image. The main drawback of TAA is that when used with transparent textures, it can result in artifacts.
Here’s how TAA and FXAA differ:
The main advantages of TAA over FXAA are more pronounced in motion. The “teeth” at the boundaries of the objects appear to be moving when you are in motion in-game. TAA works to smoothen these artifacts while FXAA simply applies a “Vaseline filer” which although effective, produces curvy lines that jump around when there’s a transition in the scene.
There are two kinds of shadows in games. “Shadows” and “Ambient Occlusion”. The latter refers to the ambient shadows that exist in crevices, edges and on surfaces hidden from the sun. The casting object and the shadow often overlap here. The main types of AO techniques are Screen Space Ambient Occlusion and it’s improved variant Horizontal Based Ambient Occlusion.
There are also the newer VXAO and ray-traced AO but those are still in early development, so we won’t bother. If you do want to know about them, just remember that voxels form the basis of VXAO while ray-tracing is used for the latter.
SSAO and HBAO are rough hacks that calculate (using an integral) where the light will penetrate and which areas will be shadowed. It’s an approximation rather than the actual thing.
Level of Detail (LOD)
The level of detail sets the object complexity and the in-game distance (from the camera) after which objects lose detail (or get blurred). It is often dubbed as environmental quality, game detail, rendering quality or some other related term in games for simplicity.
It controls the number of polygons rendered and in turn, the draw calls the CPU will need to send. These differences are often subtle and hard to notice and tend to make significant changes to only far off objects.
Texture detail is like LOD except, no rendering happens here. These are the pre-baked textures that get loaded onto your graphics card’s VRAM and act as the skins of the in-game objects. The more detailed the textures, the more realistic will they look and accordingly consume more memory.
Texture filtering is one of those settings that makes your game look sharper. Well, then how is it different from the regular sharpening filter?
In simple words, texture filtering makes the textures sharper especially the ones in the distance by sampling their mipmaps. In the case of multiple mipmaps, the average is taken and the anisotropic filtering value specifies the angle at which the textures are scaled and sampled. More on this here.
Remember NVIDIA’s godrays? Yeah, that’s basically what volumetric lighting is. Team green uses tessellated godrays which are more performance-intensive but look better too. Traditional volumetric lighting simply is a demonstration of how the sun rays (or any rays) appear and behave in the game world.
Screen Space Reflections
Screen space reflections is a technique to render dynamic in-game reflections. It is quite taxing and for good reason. SSR basically re-renders the scene on transparent surfaces. However, it only does so for the objects visible on the screen. If there are other objects that are present in the same location but not visible on the screen, they will be culled.
Tessellation is a DX11 based technique used to increase the level of detail in a scene without increasing the texture size. It is done by dividing the polygons into smaller ones to improve the mesh complexity and detail.
Tesselation is a technique that allows you to reproduce primitives (triangles, lines, points and such) in a 3D application. It does this by repeatedly subdividing the current geometry into a finer mesh.
This allows you to load a relatively coarse mesh, generate more vertices and triangles dynamically and then make it into a finer mesh.
Post-processing generally refers to effects that are implemented in the last phase of rendering, after all the other effects like tessellation, multi-sampling, reflections, and shadows are done. It includes shader-based effects such as depth of field, motion blur, ambient occlusion and sometimes FXAA or SMAA as well.
Another widely used technique, V-Sync basically caps your in-game frame rate to your monitor’s refresh rate, preventing screen tearing. It does so by slowing down the GPU pipeline to make sure the frame rate doesn’t go above your refresh rate. However, this can also affect your performance negatively by inadvertently making your game lag or inducing an input lag. Read more on it here:
- What is V-Sync: Should it be Turned Off or On?
- AMD FreeSync vs NVIDIA G-Sync Comparison: Which One is Better?
- What is Ray-Tracing: Everything About NVIDIA’s Turing GPUs, RTX and How it All Works