The Changing State of Game Development

The entry of Microsoft and Direct3D into this world stands to significantly change the status quo, due to the fact that Direct3D is by far the most widely used PC graphics API. As the maintainer of Direct3D Microsoft gets to set the pace in the PC graphics industry in several ways, so while Direct3D 12 won’t be the first modern low level graphics API, there’s little question after this announcement that it’s going to have the widest impact on game developers.

Perhaps the biggest reason for this is because of the fact that like every version of Direct3D before it, Direct3D 12 is going to be a cross-vendor standard that works on multiple GPUs. Though I don’t think it’s wise to treat Mantle and Direct3D as competitors at this point, the fact that this is a cross-vendor standard and not an AMD standard means that using it targets every video card and not just AMD video cards. So for all of the impact Mantle has had over the past 6 months, and will continue to have over the coming years, the fact that we’re to a point where there’s a cross-vendor standard will be a significant milestone.

That said, whenever we talk about low level programming it’s good to also recall who this model is and isn’t for. The purpose of abstraction is not only to provide wider hardware compatibility, but to outright hide certain types of execution ugliness from programmers. The reduction in abstraction will bring with it a reduction in the amount of this ugliness that gets hidden, and as a result the amount of knowledge needed to efficiently program at a low level goes up. Low level programing should not require a code wizard, but it’s unquestionably harder than straightforward (no optimization tricks) Direct3D 11.

Which is why the launch of Direct3D 12 is poised to increase the number of options available to graphics programmers, but not replace the high level programming model entirely. The development teams best suited for taking advantage of Direct3D 12 will be the well-funded AAA game studios, particularly those doing multi-platform titles across PCs and consoles. If you’re already doing low level programming for Xbox One and Playstation 4 – and more importantly have the staff and institutional knowledge for such an endeavor – then Direct3D 12 is but a small step, mostly one of learning the syntax of the new API. But for smaller game developers that aren’t able to put together large, experienced game development teams, then a need for a high level programming API will remain. Microsoft has not talked about high level programming within the context of Direct3D 12 thus far, but one way or another – be it Direct3D 11 or a high level friendly Direct3D 12 – high level programming will be here to stay.

Though when it comes to development, the role of middleware cannot be ignored. AMD and NVIDIA already target middleware developers for integration of their proprietary technologies, and the same concept applies on a larger scale when we’re talking about making low level programming accessible to more developers. Furthermore with the massive change in middleware licensing terms we’re seeing with this generation – Unreal Engine 4 for example is just 5% of gross revenues for smaller developers that can’t negotiate otherwise – powerful middleware is increasingly accessible to all categories of developers. So even if smaller developers can’t internally develop their own Direct3D 12 code, they will have the ability to target it by inheriting the capabilities through the middleware they use.

Consoles & Mobile Devices Too

The introduction of Direct3D 12 stands to not only change the nature of graphics development for Windows, but on other Microsoft platforms too. With Microsoft’s consumer arm having their hand in everything from phones to consoles, Microsoft is seeking to extend Direct3D 12 and its benefits to these platforms too.

Specifically, Microsoft is already committing to bringing Direct3D 12 to the Xbox One, their current-generation console. Powered by an AMD SoC whose GPU in turn is based on GCN 1.1, the Xbox One is functionally an x86 PC with a modern AMD GPU, so the fact that this is even technically possible is not a surprise. But what does come as a surprise is that the Direct3D12 API is different enough that this is even necessary.

The Xbox One, as you may recall, uses Microsoft’s Direct3D 11.X API. This details of this API are scarce as they’re only open to registered Xbox One developers, but fundamentally it’s said to be a variant of Direct3D 11 with a number of Xbox One additions, including low level API features that would be suitable for programming a console. Having the Xbox One be in alignment with Direct3D 12 is going to be a good thing regardless – it will make porting between the platforms easier – but the fact that Direct3D 12 will bring any kind of meaningful improvement to the Xbox One is unexpected. Without more details on the Xbox One API it’s impossible to say with any certainty what exact functionality isn’t currently available in Direct3D 11.X or what kind of performance benefit this would bring the Xbox One, but it stands to reason that unless most Xbox One programmers have been doing high level programming, the gains won’t be as great as for the PC.

Moving on, we have the fact that Microsoft will also be bringing Direct3D 12 to handheld devices. We’re presumably talking about Windows RT tablets and Windows Phone phones, extending Direct3D 12 to the bottom as well as it goes to the top on the PC. Handheld devices stand to gain just as much from this as PCs and consoles do, due to the fact that handheld devices are even more CPU-bottlenecked than PC laptops and desktops, so a low level API is as much a natural development for these platforms as it is the PC.

The question on our end is what kind of impact this will have on the Direct3D 12 standard with respect to abstraction. SoC-class GPUs are typically years behind PC GPUs in functionality (never mind performance), and at least among current GPUs wildly differ from each other in ways the PC GPU market hasn’t seen in years. So while extending Direct3D 12 to cover multiple PC GPUs should be relatively easy, having to support SoC GPUs certainly muddles the picture. This may mean Microsoft is looking at the long view here, when SoCs such as the Tegra K1 come along with feature sets that match recent PC architectures, coupled with the fact that Windows RT/Phone has not traditionally supported a large number of SoC GPU architectures. In which case only having to cover a handful of SoC GPU architectures instead of all 7 would certainly be an easier task.

Direct3D 12 In Depth Demos & First Thoughts
Comments Locked

105 Comments

View All Comments

  • B3an - Monday, March 24, 2014 - link

    For anyone interested.. new DX12 graphics features are coming and yet to be announced:

    http://techreport.com/news/26210/directx-12-will-a...

    As i suspected, current hardware will benefit from the DX12 performance gains, but you will need new hardware for the new graphics features. Same as previous DX releases.
  • Tristor - Monday, March 24, 2014 - link

    I should also point out that OpenGL is already more performant in draw calls than Mantle, and is fully multi-threaded. It has been for a LONG time. More importantly, it's cross-platforms. If more game devs start using OpenGL+OpenSDL we will end up with more games available on other platforms (Mac/Linux). I'm hoping the huge push Valve is doing with SteamOS will encourage this and we'll see the benefits across the board in PC gaming.

    Here's an nVidia dev talking at Steam Dev Days about the performance increases gained from simply porting to OpenGL over DirectX (these surpass the gains from moving to Mantle):

    http://linustechtips.com/main/topic/117504-modern-...

    http://www.neogaf.com/forum/showthread.php?t=69345... - AMD already has promised (and started releasing) OpenGL extensions that fully expose the capabilities of GCN hardware which has made OpenGL more performant on AMD than Mantle.

    http://www.dsogaming.com/news/john-carmack-nvidias... - Here's John Carmack himself (one of the few devs who actually embraces OpenGL fully) talking about how nVidia's OpenGL extensions make Mantle irrelevant because OpenGL is faster.

    So basically, OpenGL > Mantle > DirectX and OpenGL is also cross-platform and has been around for ages. But, nobody wants to use it because it's "too hard" or "takes too long". Companies like EA, Activision, and Ubisoft don't want to make well-optimized games, they want to make games quickly while milking profitable franchises so they can take their billions to the bank. For the rest of the games out there that are trying to do something cool (Project CARS, Star Swarm, et al) they should really start investing heavily in OpenGL. End of story.
  • inighthawki - Monday, March 24, 2014 - link

    "I should also point out that OpenGL is already more performant in draw calls than Mantle, and is fully multi-threaded. It has been for a LONG time"
    Being multithreaded doesn't mean anything. In OpenGLs case it just means it's thread safe, so you can go queue up some render commands on thread 2 while you do app work on thread 1. No different than what DX has had for even longer than OpenGL. DX12 is introducing a better multithreading model which OpenGL doesn't have. One where you can actually split rendering work equally across cores.

    "More importantly, it's cross-platforms. If more game devs start using OpenGL+OpenSDL we will end up with more games available on other platforms (Mac/Linux)"
    I'm sure a lot of people will hate me for this, but who cares? OSX+Linux marketshare combined is a tiny fraction of what Windows is, and there's not a lot of money in it.

    OpenGL is a horrible API comprised of a horrible interface trying to retain backwards compatibility with older version that should never even be used, coupled with a bunch of vendor specific extensions that khronos decided to make official because someone did the work for them of figuring it out.

    "AMD already has promised (and started releasing) OpenGL extensions that fully expose the capabilities of GCN hardware which has made OpenGL more performant on AMD than Mantle."
    Why would you ever want extensions that are vendor specific? Half the point of your post is "don't use mantle because tis vendor specific" then you praise OpenGL for gaining the ability to have vendor specific enhancements?

    "Here's John Carmack himself (one of the few devs who actually embraces OpenGL fully) talking about how nVidia's OpenGL extensions make Mantle irrelevant because OpenGL is faster."
    That's not what he said at all, I suggest you re-read it.
  • Lerianis - Monday, March 31, 2014 - link

    Well, that is kinda becoming the new 'normal'..... in order to use the new graphics stuff, you need a new graphics card.
    I'm getting kinda angry in that newer graphics cards sold on Newegg all need a minimum of a 400 Watt power supply. My nearly brand new computer has? 300 watts. So either these companies need to start putting at least a 400 Watt power supply in these machines or the graphics card companies need to make a selection of cards that regular home users can find that they can plug into their old computers that only need 300 Watts.
  • Tristor - Monday, March 24, 2014 - link

    If devs have been asking for lower level access on the PC "forever" why does nobody use OpenGL? OpenGL provides unimpeded lower level access that DirectX does not, it's cross-platform, it's well-optimized for in hardware and drivers on both AMD and nVidia, and with the numerous OpenGL extensions available there's no features available in DirectX which are missing in OpenGL.

    I'll tell you why, because OpenGL is harder to write for. "Low-level access" implies low-level programming, which is more difficult to do, especially to do properly, and it requires higher quality programmers to pull it off. The reason DirectX is popular is because its ridiculously easy to write for, not because it's well-optimized or good. This has always been the case. If game developers were truly interested in low-level access and optimizations they would have been using OpenGL this entire time.

    QED
  • Mr Perfect - Monday, March 24, 2014 - link

    OpenGL is probably also a victim of DirectX's popularity. IE; no one uses OpenGL because no one uses OpenGL. Middleware engines all seem to focus on DirectX, hardware vendors only advertise support for new DirectX features, competing games all use DirectX... It reminds me of Windows Phone and how it doesn't receive support because everyone's all busy doing Android and IOS work.
  • DarkXale - Tuesday, March 25, 2014 - link

    It generally doesn't help that (PC) titles haven't really made a good impression.

    RAGE is not exactly a good demonstrator for graphical stability and reliability, and it was supposed to the a showcase for the ID Tech engine and OGL. Needless to say, it failed at that.
    Another game, Brink, was filled with graphical problems; the game was unplayable on AMD systems.

    OGL2 software tends to be more reliable - but the problem you have then is that you're using OGL2. Which isn't exactly modern, and was written in the more... problematic... days of OGL.
  • lmcd - Monday, March 24, 2014 - link

    Tristor, you're off-base. OpenGL isn't lower-level than Mantle and that has been long-acknowledged. OpenGL isn't even significantly lower-level than DirectX. DirectX is popular because it's standardized, not because it's easy to write for, and strong standards are better than weak standards. OpenGL regularly plays catch-up with DirectX feature sets and relies extensively on extensions which are not standardized.

    Different failings.
  • bluevaping - Friday, April 4, 2014 - link

    Big gaming houses use plenty of different API's not just Direct X or Open Gl. Microsoft likes keep things were they are, until the floor drops out. Oh snap gaming PC sales are declining. It's sad that AMD is trying to get more performance from hardware and wrote their own API. Gamers with different priorities are moving away from PC's to Console(simple and less expensive hardware) to Mobile Tablets(great screens with cheaper games). There are Open GL games, some are ports and some are released on multiple platforms at the same time . I have played dozens and dozens of them. We won't see record level of PC Gamers like the past. But developers will try to reach out to other platforms to make up for it. Microsoft little to late. They should be making better tools for Open GL. Just embrace it, Microsoft.
  • ericore - Monday, March 24, 2014 - link

    There are no console advantages.
    I think I abandoned consoles 2 months after purchase, never looked back.

    The games are pricier.
    The load times are significantly greater.
    No modding ability.
    Same price of a PC which can do so much more.
    The AI on consoles is dumbed down.

    Consoles are for kids.
    PCs are for adults.

Log in

Don't have an account? Sign up now