CryTek On DirectX12 and Vulkan


Crytek’s CTO, Rok Erjavec, has just given an interview to DSOgaming a few days ago (May 20th) where he discusses DirectX12 and Vulkan. So far CryEngine is already supporting DirectX12, while obvious performance benefits were not obviously seen. Since DirectX12 is similar to Vulkan, there’s an extract that’s worth reprinting here, because we often hear “Vulkan is going to make games faster”, yet the picture even for DX12 is far from being black and white:

Rok Erjavec: As with every new technology stack, there’s a learning curve that we’re currently seeing and working through. DX10-11 pipelines have had the benefit of multiple years of focused driver optimization and work-arounds specific to their workflow, and the paradigm shift that comes with DX12 effectively erases some of the benefits of this legacy.

For him, though, the applications of Low-level APIs go beyond getting better performance, and it brings on the table more possibilities for experimentation:

Rok Erjavec: There’s a wealth of academic research that was ill-suited to practical application through a combination of hardware and software abstraction limitations. With the latter getting out of the way, and hardware flexibility continually improving – more than things just getting iteratively “prettier” – we’re looking at a rise in experimentation again. In a way, the industry has circled back to a place similar to where we were in the early-mid 90s, when software rasterization didn’t really impose any restraints on creativity beyond the 17ms barrier.

The matter of Vulkan was mentioned as well:

Rok Erjavec: The current trajectory of Vulkan provides a path to reach PC users across all the widely used OS platforms, including legacy Windows versions, as well as mobile devices, so if I was shipping a title in 2017 or beyond, Vulkan looks like an appealing choice.

If we implemented Vulkan in CRYENGINE, we wouldn’t have to choose one, as titles built with our tech would work seamlessly with both, and thus leave this choice with the users instead.

So there’s two take-aways here. One, Crytek does not have a Vulkan renderer that is planned. Or if it’s planned, it is not going to be ready anytime soon. That may be a little disappointing to hear, but since DirectX12 has been available for a longer time, it’s natural that it takes precedence. Second, Vulkan does cover some other use cases and remains an attractive API for multiple platforms - including Windows 7, since DX12 is not available for anything below Windows 10 - but down the road the share of Windows 10 is going to increase anyway, and unless you make a game that’s not just for PC/Consoles, Windows is going to remain your main target/bread for a while.

AAA developers with PC focus legacy are probably still weighting in the effort of optimizing their engines for DX12 versus targeting broader API like Vulkan. We’ll see how the situation changes later in 2016.

By the way, this probably means that any Linux client for Star Citizen would be probably running on OpenGL, unless they expect to wait for Vulkan in CryEngine for the Linux port to become a reality.