Microsoft Details Direct3D 11.3 & 12 New Rendering Features
15 replies, posted
[IMG]http://images.anandtech.com/doci/8544/DirectX12_678x452.png[/IMG]
[QUOTE]Back at GDC 2014 in March, Microsoft and its hardware partners first announced the next full iteration of the Direct3D API. Now on to version 12, this latest version of Direct3D would be focused on low level graphics programming, unlocking the greater performance and greater efficiency that game consoles have traditionally enjoyed by giving seasons programmers more direct access to the underlying hardware. In particular, low level access would improve performance both by reducing the overhead high level APIs incur, and by allowing developers to better utilize multi-threading by making it far easier to have multiple threads submitting work.
At the time Microsoft offered brief hints that there would be more to Direct3D 12 than just the low level API, but the low level API was certainly the focus for the day. Now as part of NVIDIA’s launch of the second generation Maxwell based GeForce GTX 980, Microsoft has opened up to the press and public a bit more on what their plans are for Direct3D. Direct3D 12 will indeed introduce new features, but there will be more in development than just Direct3D 12.
Direct3D 11.3
First and foremost then, Microsoft has announced that there will be a new version of Direct3D 11 coinciding with Direct3D 12. Dubbed Direct3D 11.3, this new version of Direct3D is a continuation of the development and evolution of the Direct3D 11 API and like the previous point updates will be adding API support for features found in upcoming hardware.
At first glance the announcement of Direct3D 11.3 would appear to be at odds with Microsoft’s development work on Direct3D 12, but in reality there is a lot of sense in this announcement. Direct3D 12 is a low level API – powerful, but difficult to master and very dangerous in the hands of inexperienced programmers. The development model envisioned for Direct3D 12 is that a limited number of code gurus will be the ones writing the engines and renderers that target the new API, while everyone else will build on top of these engines. This works well for the many organizations that are licensing engines such as UE4, or for the smaller number of organizations that can justify having such experienced programmers on staff.
However for these reasons a low level API is not suitable for everyone. High level APIs such as Direct3D 11 do exist for a good reason after all; their abstraction not only hides the quirks of the underlying hardware, but it makes development easier and more accessible as well. For these reasons there is a need to offer both high level and low level APIs. Direct3D 12 will be the low level API, and Direct3D 11 will continue to be developed to offer the same features through a high level API.
Direct3D 12
Today’s announcement of Direct3D 11.3 and the new features set that Direct3D 11.3 and 12 will be sharing will have an impact on Direct3D 12 as well. We’ll get to the new features in a moment, but at a high level it should be noted that this means that Direct3D 12 is going to end up being a multi-generational (multi-feature level) API similar to Direct3D 11.
In Direct3D 11 Microsoft introduced feature levels, which allowed programmers to target different generations of hardware using the same API, instead of having to write their code multiple times for each associated API generation. In practice this meant that programmers could target D3D 9, 10, and 11 hardware through the D3D 11 API, restricting their feature use accordingly to match the hardware capabilities. This functionality was exposed through feature levels (ex: FL9_3 for D3D9.0c capable hardware) which offered programmers a neat segmentation of feature sets and requirements.
Direct3D 12 in turn will also be making use of feature levels, allowing developers to exploit the benefits of the low level nature of the API while being able to target multiple generations of hardware. It’s through this mechanism that Direct3D 12 will be usable on GPUs as old as NVIDIA’s Fermi family or as new as their Maxwell family, all the while still being able to utilize the features added in newer generations.
Ultimately for users this means they will need to be mindful of feature levels, just as they are today with Direct3D 11. Hardware that is Direct3D 12 compatible does not mean it supports all of the latest feature sets, and keeping track of feature set compatibility for each generation of hardware will still be important going forward.
11.3 & 12: New Features
Getting to the heart of today’s announcement from Microsoft, we have the newly announced features that will be coming to Direct3D 11.3 and 12. It should be noted at this point in time this is not an exhaustive list of all of the new features that we will see, and Microsoft is still working to define a new feature level to go with them (in the interim they will be accessed through cap bits), but none the less this is our first detailed view at what are expected to be the major new features of 11.3/12
Rasterizer Ordered Views
First and foremost of the new features is Rasterizer Ordered Views (ROVs). As hinted at by the name, ROVs is focused on giving the developer control over the order that elements are rasterized in a scene, so that elements are drawn in the correct order. This feature specifically applies to Unordered Access Views (UAVs) being generated by pixel shaders, which buy their very definition are initially unordered. ROVs offers an alternative to UAV's unordered nature, which would result in elements being rasterized simply in the order they were finished. For most rendering tasks unordered rasterization is fine (deeper elements would be occluded anyhow), but for a certain category of tasks having the ability to efficiently control the access order to a UAV is important to correctly render a scene quickly.[/QUOTE]
[url]http://anandtech.com/show/8544/microsoft-details-direct3d-113-12-new-features[/url]
Allot more in source. DX12 is the low level console-like performance API, DX11.3 is the successor to DX11. The rational is DX12 is hard to master due to giving console like performance to PC games, while DX11.3 is a more traditional DX version upgrade, ala DX11 from DX10.
[QUOTE]
It’s through this mechanism that Direct3D 12 will be usable on GPUs as old as NVIDIA’s Fermi family or as new as their Maxwell family, all the while still being able to utilize the features added in newer generations.
Ultimately for users this means they will need to be mindful of feature levels, just as they are today with Direct3D 11. Hardware that is Direct3D 12 compatible does not mean it supports all of the latest feature sets, and keeping track of feature set compatibility for each generation of hardware will still be important going forward.[/QUOTE]
Holy shit finally.
This is atleast a good step in the right direction, DX10 and 11 always forced you to buy a new card unless you managed to set a game to DX10 or 11.
What a clusterfuck of featuresets. Why envelop these features into DirectX instead of improving the performance of the underlying techniques instead, thereby resulting in better overall usage of resources? This seems retarded.
With DX12 and Intel's rumored advancements with their next iX series release, I think it's quite possible that 4K could be played at 60FPS on a single $500 card in the near future.
[QUOTE=mastersrp;46020695]What a clusterfuck of featuresets. Why envelop these features into DirectX instead of improving the performance of the underlying techniques instead, thereby resulting in better overall usage of resources? This seems retarded.[/QUOTE]
have you ever worked with a renderer
[QUOTE=LEETNOOB;46021061]have you ever worked with a renderer[/QUOTE]
Yes, I've been working on a few different kinds of game engines in the past 4 years, and none of them required these fancy features at all, because I worked around the problems with some math. You can really do a lot with genius data structures and memory access, and stupid functions.
[QUOTE=mastersrp;46021150]Yes, I've been working on a few different kinds of game engines in the past 4 years, and none of them required these fancy features at all, because I worked around the problems with some math. You can really do a lot with genius data structures and memory access, and stupid functions.[/QUOTE]
Clearly if you don't need them then they're completely useless for everyone else aswell.
Would you rather write more code or less code for the same functionality?
[QUOTE=Skipcast;46021235]Clearly if you don't need them then they're completely useless for everyone else aswell.
Would you rather write more code or less code for the same functionality?[/QUOTE]
By that definition, people might as well write games in Python or Scratch. It's not about what code YOU write, it's about all the code that is running in total.
[QUOTE=mastersrp;46021150]Yes, I've been working on a few different kinds of game engines in the past 4 years, and none of them required these fancy features at all, because I worked around the problems with some math. You can really do a lot with genius data structures and memory access, and stupid functions.[/QUOTE]
You could say the same for tessellation, mipmapping, texture filtering, 3d textures, etc.
You can implement all these things yourself, using previous features.
Features in rendering API's [B]are[/B] optimization, they give AMD/Nvidia/Intel the ability to make hardware-implementations for/off the features, and they can optimize these feature far beyond what you can do.
[quote]console-like performance[/quote]
Can't wait to play my games in 720p at 30fps!
Jokes aside this is great, I'm surprised DX12 will be compatible with GPUs as old as the Fermi series
[QUOTE=mastersrp;46021150]Yes, I've been working on a few different kinds of game engines in the past 4 years, and none of them required these fancy features at all, because I worked around the problems with some math. You can really do a lot with genius data structures and memory access, and stupid functions.[/QUOTE]
I bet you're the kinda guy who'd gladly use the CPU for shaders given the possibility because fuck gpus, they're useless, right
[QUOTE=LEETNOOB;46021991]I bet you're the kinda guy who'd gladly use the CPU for shaders given the possibility because fuck gpus, they're useless, right[/QUOTE]
Don't be silly, that would be stupid.
So what does this mean for windows 7 users? Are getting a dx upgrade any time soon?
No love for OpenGL Compatibility? D:
[QUOTE=RoflKawpter;46022869]No love for OpenGL Compatibility? D:[/QUOTE]
What do you mean? Microsoft doesn't do any (much) OpenGL compatibility. DirectX is platform based, primarily, meaning drivers and platforms have to support it, while OpenGL is (primarily) driver based, meaning it can run on any platform, so long as the drivers support it.
The GPU and driver vendors are in charge of implementing both support for OpenGL and DIrectX, but Microsoft is in charge of implementing DirectX on the system itself as well. OpenGL doesn't need to be.
[QUOTE=mastersrp;46024006]What do you mean? Microsoft doesn't do any (much) OpenGL compatibility. DirectX is platform based, primarily, meaning drivers and platforms have to support it, while OpenGL is (primarily) driver based, meaning it can run on any platform, so long as the drivers support it.
The GPU and driver vendors are in charge of implementing both support for OpenGL and DIrectX, but Microsoft is in charge of implementing DirectX on the system itself as well. OpenGL doesn't need to be.[/QUOTE]
smartness needs to make a comeback so it can start permabanning people again
Sorry, you need to Log In to post a reply to this thread.