Effects in games: Anisotropic Filtering, SSAO & hair simulationTECHNOLOGY
There are many graphics options a PC gamer needs to be aware of. Anti-aliasing and anisotropic filtering, to name two, are nothing short of essential for gaming. Others, while perhaps not mandatory, nonetheless noticeably improve image quality, thus making graphics much more appealing to the player. Last but not least, there are some effects that apply to very specific parts of the image, for instance a main character’s hair or animals’ fur.
We have already discussed anti-aliasing techniques, including the differences in image quality and their impact on performance, and thus the final framerate. This article focuses on other graphics options, such as anisotropic filtering (AF), screen space ambient occlusion (SSAO) and different hair/fur effects.
Anisotropic filtering (AF)
It goes without saying that all gamers have at some point had to put up with blurred textures, which are the result of mipmaps, or duplicates of original textures, but pre-rendered at different (lower) resolutions so that a GPU can choose the most applicable one depending on the specific surface that requires texturing. Original textures are simply too expensive performance-wise to be unconditionally reused in a scene. Unfortunately, using mipmaps requires additional filtering to remove image artifacts.
The most primitive of these techniques are bilinear and trilinear filtering. Bilinear filtering uses four samples from a single mipmap to calculate a texel’s (a pixel of a texture) final color. Because of that, it isn’t computationally expensive but the image quality that this method provides is far from satisfactory. Trilinear filtering improves a little by using samples from the two closest mipmap sizes to calculate the texel. However, this technique still suffers from quality loss when textures — most commonly ground and road textures — are viewed at extreme angles.
To prevent this from happening, anisotropic filtering scales either the mipmap’s height or width by a ratio relative to the distortion of the specific texture. The anisotropy levels run from 1 to 16, each defining the degree to which mipmaps can be scaled by. Of course, higher levels will have a higher performance impact, but the image quality is incomparably better in comparison with bilinear/trilinear filtering.
Screen space ambient occlusion (SSAO)
SSAO efficiently approximates the ambient occlusion effect in real time. It was developed by Vladimir Kajalin of Crytek and was used for the first time in Crysis, a Crytek video game released in 2007. The advantage AO has over traditional shadowing is that it accounts for the occlusion of light and thus creates shadows that lend the scene additional depth.
Basic SSAO is typically rendered at half-resolution and uses 16 occlusion samples per pixel. Unfortunately, rendering at reduced resolutions usually causes unwanted flickering that is very difficult to hide in all situations. That is why SSAO+, an improvement over SSAO, is rendered at native resolution. However, this change drives GPU cost up nearly fourfold, making SSAO+ a very demanding AO method. Because of that, further versions of SSAO were introduced. The first was HBAO, which rendered at full resolution but uses only 4 samples per pixel, making it a pretty fast solution. HBAO+ improves with 36 samples per pixel, enabling more accurate shadowing while being only two times slower than HBAO. Another technique, HDAO, is optimized specifically for AMD GPUs, but is used in games much less frequently than HBAO.
These effects are quite different than AF and SSAO, as they are applied specifically to hair and, sometimes, animals’ fur. There are two major solutions on the market: TressFX and HairWorks. Both provide pretty decent visuals — that is, they deliver accurate hair simulation that reacts to different weather conditions. The most important difference is that HairWorks relies mostly on tessellation, so it may turn in a lower performance on GPUs older than Polaris (RX series).
|Processor||Intel Core i7-7700K @ 5 GHz|
|Motherboard||Gigabyte GA-Z270-Gaming K3|
|Memory||ADATA XPG Dazzle 16 GB DDR4 @ 2800 MHz CL 12-14-14-28-1T|
|Graphics Card||SAPPHIRE NITRO Radeon RX 470 8 GB|
|Hard Disk||Seagate Barracuda 7200.12 1 TB|
|Power Supply||Enermax Platimax 1350 W|
|Case||Antec Twelve Hundred V3|
|Operating System||Microsoft Windows 7 64-bit SP1|
|Drivers||Crimson ReLive Edition 17.2.1|
Anisotropic filtering – image quality and performance
Anisotropic filtering is a very useful technique that basically eliminates blurred textures at certain camera angles. The differences between different anisotropy levels are easily noticeable, as each one provides visibly better quality than the last. The 16x mode is perhaps the lone exception — it’s quite difficult to actually see any kind of improvement over 8x in most situations.
Interactive comparisons – Crysis 3
Interactive comparisons – Tomb Raider
Performance-wise, AF isn’t too computationally expensive. In the games we tested, framerate dropped by from 2 to 7%, a barely perceptible difference. Of course, it also depends on certain GPU and driver optimizations, but you should still expect similar results. It’s hard to imagine a situation where you shouldn’t use anisotropic filtering as it dramatically improves image quality without compromising performance. Just stick to 8x and 16x anisotropy levels and enjoy sharp, clearly visible textures at all camera angles.
Screen space ambient occlusion – image quality and performance
There is no doubt that screen space ambient occlusion significantly improves shadowing quality. Enabling this option enhances the accuracy of shadows so the entire scene looks more appealing and realistic to the gamer.
Interactive comparisons – Tom Clancy’s Splinter Cell: Blacklist
Interactive comparisons – The Witcher 3: Wild Hunt
Performance results are a mixed bag here: some games are equipped with highly optimized SSAOs while others are much more demanding in terms of GPU power. With The Witcher 3: Wild Hunt, enabling HBAO+ causes performance hits of a barely perceptible 7%. Splinter Cell: Blacklist is a vastly different case, as certain SSAO settings hit performance — clobber it, actually — by 50%. Of course, SSAO+ is the slowest method and should be avoided. HBAO+ is much faster thanks to the algorithm optimizations involved. If HBAO+ is still too slow for you, just stick to basic HBAO as it still provides great image quality and is the fastest method available. Also, give HDAO a try when it’s available–it’s optimized specifically for AMD Radeon graphics cards.
The usefulness of hair effects is an open question as they affect very specific parts of an image and are quite burdensome for performance. After all, significantly improving hair quality makes for a complex operation, but the framerate drop is nothing less than drastic in most cases.
Interactive comparison – Tomb Raider
Interactive comparisons – Call of Duty: Ghosts
Interactive comparisons – The Witcher 3: Wild Hunt
TressFX, available in Tomb Raider, hits performance by as much as 23 %, causing stuttering and the animation to be much less fluid. In simulating hair, HairWorks is a little less demanding, as evidenced by Call of Duty: Ghosts and The Witcher 3: Wild Hunt, where the performance drop rises only to 14%. Again, though, older GPU owners should remember that tessellation is a major factor here.
Another interesting thing is that framerate drop depends on the distance between simulated objects and the camera. For instance, when Riley (the dog in Ghosts) gets really close to the main character, the performance hit can jump to nearly 50%, which obviously diminishes the gameplay.
Final takeaway: Remember that hair effects require a very strong graphics card. If maintaining strong performance enabling fluid animation with no stutter is the goal, you may have to reduce overall image quality.