Up to date
This page is up to date for Godot
If you still find outdated information, please open an issue.
Godot also supports antialiasing in 2D rendering. This is covered on the 2D antialiasing page.
Due to their limited resolution, scenes rendered in 3D can exhibit aliasing artifacts. These artifacts commonly manifest as a "staircase" effect on surface edges (edge aliasing) and as flickering and/or sparkles on reflective surfaces (specular aliasing).
In the example below, you can notice how edges have a blocky appearance. The vegetation is also flickering in and out, and thin lines on top of the box have almost disappeared:
To combat this, various antialiasing techniques can be used in Godot. These are detailed below.
You can compare antialiasing algorithms in action using the 3D Antialiasing demo project.
Multisample antialiasing (MSAA)¶
This technique is the "historical" way of dealing with aliasing. MSAA is very effective on geometry edges (especially at higher levels). MSAA does not introduce any blurriness whatsoever.
MSAA is available in 3 levels: 2×, 4×, 8×. Higher levels are more effective at antialiasing edges, but are significantly more demanding. In games with modern visuals, sticking to 2× or 4× MSAA is highly recommended as 8× MSAA is usually too demanding.
The downside of MSAA is that it only operates on edges. This is because MSAA increases the number of coverage samples, but not the number of color samples. However, since the number of color samples did not increase, fragment shaders are still run for each pixel only once. Therefore, MSAA does not reduce transparency aliasing for materials using the Alpha Scissor transparency mode (1-bit transparency). MSAA is also ineffective on specular aliasing.
To mitigate aliasing on alpha scissor materials, alpha antialiasing (also called alpha to coverage) can be enabled on specific materials in the StandardMaterial3D or ORMMaterial3D properties. This only has an effect when MSAA is used (with any level). Alpha to coverage has a moderate performance cost, but it's very effective at reducing aliasing on transparent materials without introducing any blurriness.
MSAA can be enabled in the Project Settings by changing the value of the Rendering > Anti Aliasing > Quality > MSAA 3D setting. It's important to change the value of the MSAA 3D setting and not MSAA 2D, as these are entirely separate settings.
Comparison between no antialiasing (left) and various MSAA levels (right). Note that alpha antialiasing is not used here:
Temporal antialiasing (TAA)¶
This is only available in the Clustered Forward backend, not the Forward Mobile or Compatibility backends.
Temporal antialiasing works by converging the result of previously rendered frames into a single, high-quality frame. This is a continuous process that works by jittering the position of all vertices in the scene every frame. This jittering is done to capture sub-pixel detail and should be unnoticeable except in extreme situations.
This technique is commonly used in modern games, as it provides the most effective form of antialiasing against specular aliasing and other shader-induced artifacts. TAA also provides full support for transparency antialiasing.
TAA introduces a small amount of blur when enabled in still scenes, but this blurring effect becomes more pronounced when the camera is moving. Another downside of TAA is that it can exhibit ghosting artifacts behind moving objects. Rendering at a higher framerate will allow TAA to converge faster, therefore making those ghosting artifacts less visible.
Temporal antialiasing can be enabled in the Project Settings by changing the value of the Rendering > Anti Aliasing > Quality > Use Taa setting.
Comparison between no antialiasing (left) and TAA (right):
Fast approximate antialiasing (FXAA)¶
This is only available in the Clustered Forward and Forward Mobile backends, not the Compatibility backend.
Fast approximate antialiasing is a post-processing antialiasing solution. It is faster to run than any other antialiasing technique and also supports antialiasing transparency. However, since it lacks temporal information, it will not do much against specular aliasing.
This technique is still sometimes used in mobile games. However, on desktop platforms, FXAA generally fell out of fashion in favor