In the wake of poor performance on Project Cars, AMD's GPU drivers are once again under scrutiny with the release of CD Projekt Red's The Witcher 3: Wild Hunt. The game runs in a sub-optimal state if Nvidia's HairWorks fur and hair rendering technology is active - and AMD isn't happy about it.
"We've been working with CD Projeckt Red from the beginning. We've been giving them detailed feedback all the way through," AMD's chief gaming scientist Richard Huddy told Ars Technica. "Around two months before release, or thereabouts, the GameWorks code arrived with HairWorks, and it completely sabotaged our performance as far as we're concerned. We were running well before that... it's wrecked our performance, almost as if it was put in to achieve that goal."
"GameWorks improves the visual quality of games running on GeForce for our customers," GameWorks PR Brian Burke told PC Perspective. "It does not impair performance on competing hardware. GameWorks source code is provided to developers that request it under license, but they can't redistribute our source code to anyone who does not have a license. Most of the time we optimise games based on binary builds, not source code... I believe it is a resource issue. Nvidia spent a lot of artist and engineering resources to help make Witcher 3 better. I would assume that AMD could have done the same thing because our agreements with developers don't prevent them from working with other IHVs."
More often than not, Nvidia's GameWorks features are only available to users of GeForce GPUs, but CD Projekt Red allowed the Nvidia-specific tech in The Witcher 3 to operate on AMD GPUs too, albeit with an unambiguous warning that doing so may result in sub-optimal performance.
"Unsatisfactory performance may be experienced, as the code of this feature cannot be optimised for AMD products," the developer told Overclock3D. "Radeon users are encouraged to disable Nvidia HairWorks if the performance is below expectations."
[UPDATE 22/5/15 6:44pm: Nvidia has been in touch to clarify the situation with regards GameWorks running on non-GeForce platforms: "It's not CD Projekt Red's decision to allow the Nvidia tech to work on AMD GPUs - that is Nvidia's decision and most commonly-used features from us are platform-agnostic. It's the same for CPU-based PhysX and Clothworks as well."]
|1920x1080, Ultra Settings||GTX 970||R9 290X|
|HairWorks On (Low/Avg FPS)||24.0 / 39.4||18.0 / 26.3|
|HairWorks Off (Low/Avg FPS)||36.9 / 51.9||38.0 / 49.6|
So is HairWorks really the nuclear disaster for AMD that the firm says it is? We decided to find out, benchmarking the tech in a cut-scene that uses it heavily, with the latest 1.03 patch installed - which apparently improves HairWorks performance. We tested the game on a PC running a Core i7 4790K with 8GB of RAM, and benchmarked the same sequence running on a GTX 970 and an R9 290X with HairWorks active and disabled.
As you might expect from a technology that is said to render tens of thousands of tessellated strands of hair, the performance hit to the game is substantial - whether you are running an Nvidia or AMD graphics card. In our test case, the GTX 970 lost 24 per cent of its performance when HairWorks was enabled, dropping from an average of 51.9fps to 39.4fps. However, AMD suffers an even larger hit, losing around 47 per cent of its average frame-rate - its 49.6fps metric slashed to just 26.3fps.
AMD's argument appears to be that there is no access to GameWorks source code, making optimisation for the technology extremely difficult. Meanwhile, Nvidia counters by suggesting that most of its own optimisation work generally is carried out via analysis of the final, compiled code, rather than the source.
From our perspective, HairWorks - just like the TressFX tech found in Tomb Raider - is best considered as an expensive luxury to be enabled only if you have a vast surfeit of GPU compute power available. With regards AMD performance generally, you'll note that the GTX 970 and the R9 290X offer similar frame-rates once HairWorks is disabled - so the good news is that GameWorks integration hasn't crippled AMD GPUs overall. Whether you own an Nvidia or AMD graphics card, our suggestion is to run The Witcher 3 with HairWorks turned off for best performance. The bottom line is that if a superb card like the GTX 970 (which is running the optimised HairWorks code, remember) produces sub-30fps performance dips with the technology enabled, that's a lot of GPU resource that could be better spent elsewhere, like aiming for a consistent 60fps for example.
We're currently testing The Witcher 3 across a range of PC hardware, with a view to benchmarking performance across AMD, Intel and Nvidia kit and we'll report back with our findings soon.