Experienced Points

The HairWorks Debacle Explained


Earlier this month there was a new chapter in the ongoing pissing contest between NVIDIA and AMD. The Witcher 3 came out, and apparently using the fancy realtime flowing hair effects made the game run really, really poorly on AMD hardware. AMD then insinuated that this was due to deliberate sabotage on the part of NVIDIA.

Odds are you skipped that story. Not many people have the patience to follow the drama of something this dense, technical, and often very strange. But if you were looking at those headlines and wondering how one hardware company could sabotage another hardware company and apparently get away with it, then this should explain just how sad and stupid the whole thing is.

Setting the Stage

There are really only two companies making graphics hardware for gaming these days. One is NVIDIA, who are dominating the PC market right now. The other is AMD. These two companies are in fierce competition, always trying to put out a card just a couple percent faster and a few bucks cheaper than their rival. NVIDIA has the reputation as the leader, while AMD has the advantage that they’re supplying all the graphics hardware for both the Xbox One and Playstation 4.

If you’re the sort of person who doesn’t like to worry about hardware and you don’t care if a game is 10% faster on whatever hardware, then none of this matters to you. Games have looked gorgeous for years and it’s getting harder than ever to distinguish games from several years ago from games that are coming out today. Yeah, stuff looks incrementally better, but not “I’m going to spend hundreds of dollars upgrading my PC” better. Even if AMD came out with some new miracle hardware that was magically twice as fast as their rivals, it would be really tough to show that off in screenshots. All they could do is brag about higher framerates. Sure, that’s nice, but not everyone cares about that.

So it’s getting harder and harder for these two to make any significant change to the market by building better hardware. Which means they’re now looking for other ways to get an advantage.

The Problem

I’m sure you’ve heard by now that videogames cost a lot of money to produce. To help defray that crippling cost, developers turn to middleware. Instead of paying their programmers and artists to make countless trees for their game world, they license some software to handle it for them. Want to add physics to the game? There’s software for that. Need some AI in your game? No problem. Need to animate complex 3D characters? You better believe they have middleware for that.

However, some of this middleware is made by NVIDIA and AMD. And here is where things get kind of murky. The team behind SpeedTree are in this to make money and hope that you’ll make an awesome game with their tools. But NVIDIA and AMD aren’t software companies and aren’t trying to make a living selling middleware software. No, what they really want is to make software that makes their graphics hardware look good.

The Drama

So CD Project RED, the company behind The Witcher, licensed HairWorks from NVIDIA, which is middleware to make fancy flowing hair. (You might remember TressFX from Tomb Raider 2013, which was the same sort of idea, except that TressFX is from AMD.)

Near the end of the Witcher 3 development cycle it was discovered that HairWorks completely killed performance. Framerate dropped a moderate amount on NVIDIA hardware, but “mysteriously” took a massive hit on AMD hardware. This basically made the feature useless to AMD users and made NVIDIA hardware look amazing in contrast.

Witcher 3 is a major release and lots of people are upgrading their PCs specifically to be able to play the game with all the bells and whistles turned on, so having a massive performance gap right at launch is a huge marketing win for NVIDIA.

This is extremely suspicious. You can’t prove that NVIDIA crippled their HairWorks tech in order to hurt AMD, but that seems to be what everyone thinks has happened. It’s like a guy who notoriously hates his wife, takes out an insurance policy on her without her knowing, and they find her drowned in the pool the next day. It’s entirely possible it’s all a misunderstanding and a coincidence, but that’s not the most plausible explanation.


The Culprit

But before we form a mob and assault Castle NVIDIA with pitchforks, let’s remember that their job is to sell graphics hardware, not make videogames. Making Witcher 3 stable and performant on all hardware was the job of CD Project RED.

AMD offered TressFX to CD Project, but the developer claimed it was “too late” to add it. Meaning the performance problems weren’t noticed until near launch. Either they weren’t doing testing, or they blindly accepted an update from NVIDIA near the end of development. Either way, that was foolish.

In fact, the Witcher 3 developers made a lot of blunders:

1) CD Project RED chose to chase after gimmicky graphical tricks. “Flowing hair” isn’t exactly the next-gen killer app that gamers are looking for. If it wasn’t there, most of us wouldn’t complain or even notice. On the other hand, gimmicks aren’t always bad. Except…

2) CD Project RED chose to do it using vendor-specific libraries, even though it was possible or even likely that NVIDIA might try something like this. Of course, using NVIDIA middleware could be safe if CD Project RED had some way to audit the code themselves, but…

3) CD Project RED didn’t have access to the HairWorks source code. Not surprising, but it makes the whole thing that much more sketchy and dangerous. HairWorks was a black box and none of the programmers could see how it worked or what it was doing. That’s risky enough, but apparently…

4) CD Project RED didn’t do cautious testing to screen for these sorts of AMD-killing shenanigans. This was a 100% dumbass move. But even this ridiculous foolishness would have been harmless if they had just added TressFX for AMD users. But no…

5) CD Project RED dealt exclusively with NVIDIA.

Yes, you can be mad at NVIDIA for being extremely shady and destructive to the market as a whole. But let’s not forget that CD Project RED behaved like complete rubes. Sure, be mad at the bank robber. But let’s not overlook the banker who hired no guards, never turned on the security system, and left the vault door hanging open.

Yes, you can turn off HairWorks and just enjoy the game without it. I’m not worried about the feature itself, but the fact that the Witcher 3 developers got played. The performance of their videogame was harmed so that it could be used to sell more NVIDIA hardware. That’s a really sad outcome for such a massive, bold, uncompromising game. This is one of the greatest RPGs in years, and it deserves better than to be used as a cheap sales pitch for NVIDIA’s latest gizmo.

Shamus Young is a programmer, critic, comic, and crank. Have a question for the column? Ask him! [email protected].

About the author