Back to Search
What is the current status of the Vulkan (Generation 12) implementation?
Ali Brown · Director of Graphics Engineering

So probably we should start explaining what it is before we explain where it is at the moment. So yeah, we mentioned two things there. There's the Gen 12 renderer, or Generation 12 renderer, and then there is the fact that we're going to primarily use the Vulkan API. So the Gen 12 is just the name we came up with for our renderer, which is going to be utilizing multiple CPU cores more than the previous renderer, which mainly only runs on two CPU cores. Obviously these days we tend to have eight or 16 cores or more. And there's a lot of focus on pre-computations, so the runtime is much faster. So that's the Gen 12 renderer. And under the hood, it's going to use the Vulkan graphics API. In fact, initially, it's going to use DirectX 11, which is what the current engine uses, and Vulkan. And then once we've got the Vulkan support to be better than the DirectX 11 support, we'll drop DirectX 11 and move fully over to Vulkan. And Vulkan is a more modern API. Lighter weight, much faster. It's much closer, a thinner layer of abstraction over what the GPU actually does. So that gives us a lot of performance boost, but it takes a lot more time to program for. So it's more initial investment, but then we get big performance wins once we get over the initial hurdle.

And where are we at? So it's complicated to answer, but we have multiple mini teams we've set up in the graphics and engine programmer departments, and they're tackling six separate areas. So I'll talk for each of the six and where we're up to. So the highest level one is the pipeline, render pipeline we're calling it, which is the way we structure a frame: first we render some shadows, and then we do some render to texture work, and then we'll get on to a depth pass, a color pass, then we'll do the UI and such. That pipeline is the framework that glues it all together. That bit is starting soon, but we haven't actually needed to do that bit first. You would have imagined we'd start there, but actually it's the opposite. We've started at the other end of the system.

So at the other end of the system, we have the Vulkan device. This is the lowest level part of it, which is where we actually issue our draw commands to the GPU using the Vulkan API. So that's actually the first thing we started on, the very lowest level, the most difficult part. And we've got a couple of guys just working on that one section alone. And then in another studio, we've got some people looking at the DirectX 11 equivalent, so what we're going to use in the meantime while we get this renderer up and running. And because we already have DirectX 11 support, that's pretty much done. There's not a lot to do there. There's not a lot of concerns. So that section is OK. And then above them both we have this common layer. So there are differences between DirectX and Vulkan, and by having this common layer above we can abstract that and hide that difference, so the higher level rendering code doesn't need to worry about whether it's DirectX or Vulkan. And again, that part of it is pretty much done, and that's not a particularly complicated bit.

And then the real work comes down to two remaining topics. So we have the post effects and we have what we call the scene submission, the scene rendering. So the post effects are our bloom, our lighting, all these things, the general effects, and some of the effects that people hate, motion blur and chromatic aberration and those ones as well. But the ones that people don't hate so much as well. That's a big chunk of work, and we have two guys just working on that. They're getting quite far through that. I couldn't give a percentage, but they've made very good progress. They've started with the hardest ones intentionally so that we prove the system, and then there's going to be a bit of grunt work to get through the more trivial ones afterwards. And then the final big topic is the scene submission, which is getting basically the geometry into the game, into the renderer. So our shadows and our color pass, and just getting all of this geometry very quickly and efficiently into the renderer. And that's probably one of the larger sections, and that's just about started.

So at the moment we've got good progress on the Vulkan device, the DirectX 11 device, the common layer that binds them together, and we've made good progress on the post effects. And then the main large areas that are still to be started or to make significant progress on are the scene submission and the overall render pipeline that glues it all together. So yeah, it's hard to say where that means we are.

Jared Huckaby · Host, Community

If this is the timeline, from beginning to end, where are we?

Ali Brown · Director of Graphics Engineering

Somewhere in my head it's in the middle. I don't know. It's hard to give a... Each of these six things are extremely big and complicated in themselves. We have lots of designs. There's endless discussions on each of these topics. So even when programming hasn't started, we can be many weeks into work before we've even got to that stage. That's progressing well, though. And there's a lot of resources dedicated to this internally.

-
Open in pop-up
Open in new tab
Click to copy link to YouTube
|
Published on this date.2020-03-27
Save Card as Image
ID: 673164561 (Click to copy)
Perma link (Click to copy)
All Q&As from this episode
Transcribed by starfarer.space