Improved Graphical Fidelity in WoW

We appreciate that AMD made it possible for us to update World of Warcraft: Shadowlands to include their FidelityFX Combined Adaptive Compute Ambient Occlusion (CACAO), a new implementation of screen-space ambient occlusion. This is an effect used in World of Warcraft to improve graphical fidelity. Here’s a bit of a deep dive into what CACAO is, why it was integrated into World of Warcraft: Shadowlands, and what was gained by doing so.

What is AO?

Ambient Occlusion (AO) is the concept in graphics where the overall lightness affecting a surface in an environment is diminished by the presence of other nearby surfaces. Those other surfaces block, or occlude, some of the non-directional scattered light in the scene from reaching the affected surface.

Think about a car on the highway on a sunny morning. The car would have both a shadow – a sharp outline of the silhouette of the car cast opposite the direction of the sun – and a softly shaded area on the road underneath, more-or-less centered on the car. On a very overcast day, the car may not have much of a shadow, but the shaded area underneath would still be apparent.

AO mimics the shading effect under the car which is not its direct shadow. Subjectively, AO adds subtle visual cues about the proximity of surfaces in the scene while making the resulting image appear less flat.

Switching to CACAO

FidelityFX CACAO is an AO technique like the one used in Battle for Azeroth, with optimizations, and it’s implemented in compute. The hope here is that by switching to this new implementation, players would get the same look with a smaller performance cost. CACAO also adds a new reduced-resolution operating mode, which promised a much slimmer performance profile with minimal degradation to visual quality. By being entirely implemented in compute, CACAO can be offloaded onto the compute queue, to run in parallel with graphics, although that has not yet been taken advantage of for Shadowlands.

Steps to Get There

Integrating FidelityFX CACAO into World of Warcraft went smoothly; the overall technique is so similar to the previous AO that it could easily be dropped in as a replacement, consuming the same inputs to produce similar output. As a source code distribution, CACAO includes support out-of-the-box for DirectX 12 and Vulkan APIs. Since WoW targets DirectX 11 and 12 on Windows and Metal API on MacOS, there was a modest porting effort involved to get the technique working through the API abstraction layer for tasks such as resource management and command list construction.

Fortunately, since WoW’s shader programs are (mostly) written in HLSL, very few changes were needed to the DirectX 12 version of the CACAO shaders, where most of the logic that implements the technique is.

The Results

FidelityFX CACAO in full-resolution mode produces results that are visually indistinguishable from our previous implementation and yields a modest performance improvement on most graphics cards, especially newer architectures with more mature compute capabilities. On most systems, however, we’ve elected to apply the reduced-resolution mode, which produces results that are nearly as good with a substantial improvement in performance across all compatible devices.

20 Likes

:hearts: So excited to see these features in WoW! Disclaimer: proud AMDer. :slight_smile:

5 Likes

[x] sponsored

11 Likes

don’t see the difference.
normal maps? when?

1 Like

I know this is from AMD, but the option is selected when I open my game’s options and I’m using a NVIDIA card. Does this work for all cards or just AMD’s? (sorry for my lack of technical understanding and if this is a dumb question lol)

1 Like

Grats to AMD i guess, though i’ll never be using one of their cards again, every other driver update causes crashing on my card.

6 Likes

I was the owner of a 5700 xt from AMD and it was one of the buggiest cards I’ve ever used. AMD is cheaper and has good raw power but the driver issues are real.

12 Likes

nvidia dlss when?

4 Likes

FidelityFX CACAO in full-resolution mode produces results that are visually indistinguishable from our previous implementation

If the implementation is visually indistinguishable from the last implementation then how is the fidelity improved?

2 Likes

Corporate talk 101.

omg so now what?
what if we already bought a geforce nvidia rtx for ray tracing… now we also need to buy amd graphics cards for this… r.i.p. the loan sharks gunna break by legs for asking for more…

AMD, non AMD dont see much of a difference i think

2 Likes

2025 or later?

Lower cost to the hardware for the same performance is an overall improvement to players’ computers.

3 Likes

How much did AMD pay for this sponsored blog post? Surely paid advertising should be clearly noted at the beginning of the article?

4 Likes

I was wondering the same thing having a RTX 2060. There is another option there as well. I decided to switch to auto detect for the time being.

No difference in either performance or fidelity using a Vega 64.

There are a lot of words in this post, but they don’t seem to translate into anything tangible in game.

Would it be possible to get some further information about what exactly this is going? What resources are being saved? How much is being saved? Is there supposed to be a visual difference?

I would appreciate more information explaining this tech more thoroughly, thanks you.

I run a 5700 xt and have no issues. :man_shrugging:t2:

1 Like

Similar story here, the gaming PC in my living room uses a 5700 XT and it runs fine, even with VR titles which are notoriously prone to issues.

I think there’s significant differences between implementations of AMD cards. Mine is a Sapphire Nitro+ and was reviewed well, but I’ve seen other 5700 XTs (usually cheaper ones) that have significant issues.