Don’t develop on DirectX 12 just chasing performance gains, says Ubisoft programmer

Ubisoft running the rule over DirectX 12

Tiago Rodrigues, 3D programmer at Ubisoft Montreal, hosted a talk on the Advanced Graphics Tech card at GDC last week, covering the company’s experiences porting over their AnvilNext engine to DirectX 12. The Advanced Graphics Tech prefix alone should have been the first hint that much of the low-level discussion was going to fly straight over my head…

Keep it simple, plug a joypad into your PC and just play games. Check out our pick of the best PC controllers around right now.

Turns out that the Game Developer Conference in San Francisco is like, totally aimed at game developers. I mean, they don’t make it easy for dimwit journos sitting in on complex discussions, about the identifiers used to logically address different GPU resources and queues, to fathom what the hell is going on.

But despite still not 100% knowing how to now code for DX12 their findings were still clear to my dull, non-dev brain. It turns out that just hitting the same gaming performance Ubisoft were getting on the DirectX 11 version of AnvilNext alone was hard enough when switching over to DX12. They seem to think you should be super-happy if your game can match the old API’s performance, never mind deliver some magical performance gains.

“If you take the narrow view that you only care about raw performance you probably won’t be that satisfied with amount of resources and effort it takes to even get to performance parity with DX11,” explained Rodrigues. “I think you should look at it from a broader perspective and see it as a gateway to unlock access to new exposed features like async compute, multi GPU, shader model 6, etc.”

Ubisoft's latest are still purely running DX11

Ubisoft have only seen a GPU performance boost of around 5% at best, and that’s mostly down to the better initial async compute prowess of AMD’s latest graphics tech. The CPU performance scales better, in their experience delivering between 15-30% improved processor performance. Though that’s still not necessarily going to translate into hefty FPS gains in-game.

For a cross-platform publisher though, especially one using their own engine, the newly exposed features are the most attractive parts of DX12 because they’re essentially giving developers feature-parity with the APIs used on consoles.

“For feature set, we are now pretty much at feature-parity on PC. Which is great from an engine design perspective,” said Rodrigues. “‘You can, more or less, unify the feature set with the consoles and you have the opportunity to do some positive architectural changes to your engine.”

At the moment Ubisoft Montreal will be hard at work on the next Assassin’s Creed game, so it looks like their DX12 learnings will filter into the next generation of their AnvilNext engine. Matt’s been hard at work on our Ghost Recon Wildlands port review (still no DX12) and he thinks that will be the last game built on the aging AnvilNext 2.0 engine. With the extended dev time given over to the next AC title that’s likely to mark the beginning of a new era of Ubi games.

Vulkan game support

But it’s not all about the consoles and DirectX 12 though. One of the benefits of porting your game or your engine over to DirectX 12 is that all the ‘grunt work’ will then have been done if you want to then move on to another low-level API such as Vulkan.

That should be music to Linux fans’ ears as it ought to mean that if publishers and developers are offering DX12 versions of their games it really shouldn’t be too much of an issue to then make them available outside of the Microsoft API ecosystem. That ought to make Mr. Sweeney happy at least…

Whether that little extra ‘grunt work’ to make a Vulkan version of a game will actually translate into a Linux-compatible version of the next Assassin’s Creed though is still very much up in the air. Right now all Vulkan fans get on PC are Doom, Dota 2 and Ark, with a smattering of other beta versions of small scale games like the Talos Principle.

But, in a somewhat bizarre twist, if it really is that easy to shift from DX12 to Vulkan, Microsoft’s own API could itself be the herald of a resurgence in Linux gaming.