Crytek on Async Compute: Interesting, But It Adds Non-Trivial Complexity; DX12 Support To Improve With Time
Crytek is still synonymous with top-tier graphics even though they haven't released a new game in three years, unless you count the Oculus Rift exclusive The Climb. While the company is now focusing heavily on VR with titles like The Climb and Robinson: The Journey, they're also working on the previously announced cooperative action/TPS HUNT: Horrors of the Gilded Age, which reportedly looks really impressive already.
That's why it's always interesting to read the makers of CRYENGINE talking about technology. DSO Gaming published an interview with Crytek’s Technical Director, Rok Erjavec, just yesterday and there are some interesting tidbits on topics like Async Compute and DirectX 12.
Let's start with the former:
Currently we’re using Asynchronous Compute in VR development, where a technique known as Async-Timewarp/Reprojection is used by VR APIs to reduce latency and offset the negative effect of occasional frame drops. We’re also in the process of evaluating and experimenting with other uses for it. The possibilities are interesting, but at least for the time being, it also introduces non-trivial added complexity in PC space due to lack of standardization and the relative immaturity of the hardware that supports it, where many GPUs come with sometimes problematic restrictions on pre-emption granularity, etc.
This comment seems to line up perfectly with our previous report of the GDC 2016 presentation by Jonas Meyer (IO Interactive's Lead Render Programmer), according to which Async Compute is "super hard to tune" on PC.
Regarding DirectX 12's disappointing first wave of games, Crytek's Erjavec had this to say:
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.
In conjunction with the fact that the early DX12 titles have effectively been ports of DX11-optimized assets and codebases, we are not yet seeing software that really targets DX12 strengths, and in some ways, teams have to specifically re-learn how to fix things that used to be the responsibility of driver development teams in DX11. The situation will continue to improve throughout 2016, and as more titles shift toward targeting low-level APIs from the start of development, the differences and benefits will become more obvious.
Once again, this echoes completely with what Jonas Meyer told us in our exclusive interview about HITMAN's DirectX 12 implementation.
I think it will take a bit of time, and the drivers & games need to mature and do the right things. Just reaching parity with DX11 is a lot of work. 50% performance from CPU is possible, but it depends a lot on your game, the driver, and how well they work together. Improving performance by 20% when GPU bound will be very hard, especially when you have a DX11 driver team trying to improve performance on platform as well. It’s worth mentioning we did only a straight port, once we start using some of the new features of dx12, it will open up a lot of new possibilities – and then the gains will definitely be possible. We probably won’t start on those features until we can ditch DX11, since a lot of them require fundamental changes to our render code.
DX12 includes new hardware features, which I think over time will make it possible for us to make games run even better.
The gist of it is that DirectX 12 may end up delivering that 20% performance boost claimed by Microsoft, but only in due time, once game developers have been able to learn how to harness it properly. Of course, in the meantime we'll keep track of how all the DirectX 12 enabled games are doing, so stay tuned.