UnigineEditor
Interface Overview
Assets Workflow
Settings and Preferences
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Landscape Tool
Using Editor Tools for Specific Tasks
Extending Editor Functionality
FAQ
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
UnigineScript
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine and Tools
GUI
Double Precision Coordinates
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
Rendering-Related Classes

Temporal Anti-Aliasing (TAA)

Temporal anti-aliasing (also known as TAA) is a anti-aliasing technique to reduce temporal aliasing (flickering or shimmering effects). This technique can be combined with FXAA for better quality.

ISS without TAA.
ISS with TAA.

TAA Features#

Unlike Multisample anti-aliasing (MSAA) that performs anti-aliasing only on edges of polygons (and makes this edges smoother), Temporal anti-aliasing applies smoothing to the whole scene. In case of full deferred rendering (when the final image is composed of different texture buffers: depth, normal, etc.), MSAA will increase performance costs, because Multisample anti-aliasing should be applied to each texture buffer.

How TAA works#

The main concept of temporal anti-aliasing is to use a subpixel jitter of scene camera every frame and then combine all this frames into the final image. So, it will take time to get a smoothed picture (for example, 5-7 frames), but with the frequency of 60 frames per second it will look seamlessly.

Simplified demonstration of the TAA camera jitter.

During rasterization process, there is a test whether the object will get into pixel or not. And the object will not be rendered if it doesn't occupy a major part of a pixel.

Vector image before rasterization.

And here we can get an error, when we have a sphere object before rasterization and get a square object after, because some parts of the sphere doesn't occupy enough pixel space.

Bitmap image after rasterization without TAA.

Not a very good rendering, right? And temporal anti-aliasing solves this problem, because camera will have a subpixel jitter, and each part of this sphere at least once will be rendered in a frame. And after combining these frames, we will get a true sphere, not a square! Voila!

Bitmap image after rasterization with TAA.

Ghosting#

This anti-aliasing technique works perfectly for static scenes (without any moving objects). But when objects are moving, frames will significantly differ one from another and we will see a trail of "ghosts" of the moving object. This effect is called ghosting.

To get rid of ghosting, there is a velocity buffer. Velocity buffer stores information about transformations of objects. Due to this buffer, the engine knows about the object transformation and don't render the "ghosts" of the moving object. Also, the engine checks the color intensity of the pixel, because of camera jitter.

Summary#

TAA has a wide scope of usage, because it improves whole image (not only the edges of the geometry, like MSAA) including geometry, shadows, etc. It greatly reduces all the problems, and does not cut the performance down, working well with both static and dynamic images. However, keep in mind that the key factor of good TAA performance is optimized content of the scene: the higher FPS is, the faster temporal anti-aliasing smooths the scene. In addition to this, UNIGINE allows you to choose the type of anti-aliasing: TAA or FXAA, or combine them both for better image quality (FXAA is applied before temporal summing).

TAA Adjustment#

Temporal Anti-Aliasing (TAA) settings are available for adjustment via the Render -> Antialiasing section of the Settings window, along with Fast approXimate Anti-Aliasing (FXAA) and Supersampling settings.

TAA Settings

Anti-Aliasing Settings

TAA Settings#

TAA Toggles TAA on and off.
Fix Flicker Removes bright pixels by using the pixel brightness information from the previous frame. We recommend to enable this option for bright thin ropes, wires, and lines. However, when enabled, may produce artifacts by removing small bright objects.
Notice
Can be controlled by render_taa_fix_flicker console command.
Frames By Color Toggles accumulation of a variable number of frames over time depending on the pixel color difference between the current and previous frames on and off. If the pixel color in the current frame differs from the pixel color of the previous frame a lot, these frames aren't combined and blended during TAA. When enabled the image becomes more sharp but it may produce additional flickering, thin objects may be blurred (e.g. grass, metal structures, wires, etc.). Disabling this option may result in more noticeable ghosting effect.
Notice
Can be controlled by render_taa_frames_by_color console command.
Fix Blur Toggles Catmull-Rom resampling on and off. The option allows you to reduce image blurring when the camera moves forward/backward resulting in a sharper image. It is recommended to disable resampling at low settings.
Notice
Can be controlled by render_taa_catmull_resampling console command.

Antialiasing In Motion Toggles improved anti-aliasing in motion (for moving camera and objects) on and off.
Notice
Can be controlled by render_taa_antialiasing_in_motion console command.

Antialiasing In Motion

Diagonal Neighbors Toggles taking into account diagonally neighboring pixels in the process of color clamping on and off.

Preserve Details Controls the TAA detail level: the higher the value, the more detailed the image is. At the value of 0, the image becomes blurred when moving the camera, however, the TAA effect is better. At high values, this option may produce additional flickering. Thus, to improve the anti-aliasing effect, you can decrease the value; to minimize blurring — increase it.
Notice
Can be controlled by render_taa_preserve_details console command.
Frame Count Specifies the number of frames that are combined and blended during TAA calculation. The higher the value, the more frames are combined into the final image and the better anti-aliasing is.
Notice
Pixel Offset Specifies the size of the sample offset performed during subpixel jittering. This parameter allows specifying the offset that is less than a pixel: for example, if you specify 0.5, frames will shift to half a pixel. The parameter allows reducing flickering of small elements on the screen.
Notice
Can be controlled by render_taa_pixel_offset console command.
TAA Samples Specifies the number of the sample offsets performed during subpixel jittering. By the minimum value of 1, there are no offsets and, therefore, no anti-aliasing. The parameter allows reducing image jittering and blurring. Available values are 1, 4, 8, and 16.
Notice
Can be controlled by render_taa_samples console command.

Frames By Velocity#

Enabled Toggles accumulaton of a variable number of frames over time depending on the pixel velocity difference between the current and previous frames on and off. Reprojection of pixels of the previous frame is performed taking into account the velocity buffer and the result is combined with pixels of the current frame. This option reduces blurring and ghosting in dynamic scenes with a lot of moving objects.
Notice
Can be controlled by render_taa_frames_by_velocity console command.
Threshold Specifies the threshold value defining sensitivity to velocity change (velocity threshold at which pixels are treated as fast moving).
Notice
Can be controlled by render_taa_frames_velocity_threshold console command.
Max Frame Count Sets the number of frames combined and blended for pixels that don't move relative to the screen space.
Notice
Can be controlled by render_taa_max_frames_by_velocity console command.
Min Frame Count Sets the number of frames combined and blended for fast moving pixels on the screen.
Notice
Can be controlled by render_taa_min_frames_by_velocity console command.

Recommendations#

As you can see TAA has a lot of settings enabling you to adjust it for relatively static scenes as well as for dynamically changing environments.

Static Scenes#

Below is an example of TAA settings for relatively static scenes.

TAA Settings for Relatively Static Scenes

Recommended Anti-Aliasing Settings for Relatively Static Scenes
  • The Diagonal Neighbors option should be enabled, as it provides more accurate pixel color information reducing the stair-step effect. At the same time TAA causes more blurring is case of fast camera movement, which is especially noticeable on grass and other similar high-contrast screen areas.
  • Preserve Detail value is decreased to reduce flickering of small pixels.
  • The number of TAA Samples is set to 16, which increases the number of variants for subpixel camera jittering, thus making the stair-step effect even less noticeable.

Dynamic Scenes#

Below is an example of TAA settings for very dynamic scenes where trails from thin objects are especially noticeable.

TAA Settings for Dynamic Scenes

Recommended Anti-Aliasing Settings for Dynamic Scenes
  • The Diagonal Neighbors option should be turned off, as it may result in significant blurring of small details in motion.
  • Increase the Preserve Details value up to 1 or higher to reduce ghosting effect for moving objects.
  • Set TAA Samples value to 4 to reduce flickering of small pixels when the camera does not move.
  • It is also recommended to reduce Max Frame Count to 60 or lower, to accumulate less frames for slow motion, reducing the ghosting effect.
Last update: 2019-11-28