Directx 11 For Small Scale And Directx 12 For Large Scale.

Started by
14 comments, last by SeanMiddleditch 7 years, 8 months ago

Just something to think about, you could basically make dx11 using dx12. Dx11 can almost be looked at as a wrapper for dx12

Microsoft actually did this as a porting aid for bringing DirectX 11 applications to DirectX 12; it was called DirectX 11on12. We briefly evaluated it as a tool for bringing a title over to DirectX 12 when it was still in its EAP stage. I don't know if it was kept up-to-date or not; to be honest with you it doesn't seem like the right way to approach a DirectX 12 port in retrospect.

I think the name dx12 is a little misleading as others have said, its not really bringing anything new to the table, but rather giving you much more control over the graphics hardware

Completely agreed, it seems to be creating a lot of confusion especially in hobbyist scenes where people now feel the need to move to this new API thinking that DirectX 11 is deprecated and outdated. It's really really not! I can't stress this enough.

<rant>

I think this is also a problem with very low level software technologies like these being exposed to the gaming community and them being seen as must-haves to be competitive in the gaming market, whether your game will benefit from them or not. DirectX 12 and Vulkan are the new edgy buzzwords which gaming enthusiasts can use to judge and compare games. There is this idea that having your game run on DirectX 12 will automatically make it faster and more graphically impressive, because 12 is a larger number than 11 and therefore it must be better.

I have lived and breathed DirectX 12 for a good year now working on bringing an existing DirectX 11 engine over to DirectX 12 (because of reasons), and it has been an incredibly challenging endeavor. Only since a short little while have we been able to actually get more out of 12 than we could get out of 11 within the architecture that was in place, and that was with a team of talented and experienced engineers.

I am all for people broadening their horizons and teaching themselves how to work with this genuinely exciting new tech, but for the love of all that is good, if you're actually trying to ship something on your own tech within a reasonable time frame and without an experienced team working on this full time you're just so much better off sticking with 11. Building a 12-based engine just takes up so many of your engineering resources while architecting, implementing and debugging your engine (and debugging in 12 can be ruthless) that it's just not worth the trouble if you don't have a very good reason to go for 12 in the first place.

AAA developers who know they can bring GPU drivers to their knees in DirectX 11 or companies doing heavy GPU simulations with lots of data throughput know up front they can benefit from 12, so it makes sense for them to use it if it helps them in the long run. It's exactly these companies who reached out to hardware vendors and companies like Microsoft to state that they would be interested in such an API, eventually resulting in the development of Mantle and subsequently DX12 and Vulkan. As an indie developer or hobbyist it seems very unlikely to me that you'd ever need or benefit from something like 12.

I know I can sound like a grump and a broken record by writing all of these DirectX 12 posts, and I also know that there's plenty of people who think I'm wrong and who don't want to hear this stuff, but I just really want to make the point that you don't have to use 12, and that it's usually a better idea to stick with 11 if you want to actually build cool and exciting graphics techniques. If there's anything I like to see from a community like this it's people building cool new crazy exciting graphics stuff, and I feel like 11 will get you there much faster than 12 will.

</rant>

I gets all your texture budgets!

Advertisement

hing to think about, you could basically make dx11 using dx12. Dx11 can almost be looked at as a wrapper for dx12


Which is called D3D11On12. :P

https://msdn.microsoft.com/en-us/library/windows/desktop/dn913195(v=vs.85).aspx

I don't know it's just a dumb wrapper or if it is actually an optimized implementation, though.

Sean Middleditch – Game Systems Engineer – Join my team!

Which is called D3D11On12. :P

https://msdn.microsoft.com/en-us/library/windows/desktop/dn913195(v=vs.85).aspx

I don't know it's just a dumb wrapper or if it is actually an optimized implementation, though.

It's a dumb wrapper meant for using D3D11-compatible libraries in a D3D12 application. It can't really compete with the D3D11 driver optimizations.

Which is called D3D11On12. :Phttps://msdn.microsoft.com/en-us/library/windows/desktop/dn913195(v=vs.85).aspxI don't know it's just a dumb wrapper or if it is actually an optimized implementation, though.

It's a dumb wrapper meant for using D3D11-compatible libraries in a D3D12 application. It can't really compete with the D3D11 driver optimizations.

D3D11On12 author here. It's not optimized yet, but should be able to compete with some DX11 driver implementations before long.

Are we talking Intel implementations or NVIDIA implementations? :P

Impressive nonetheless, I had no idea it was that advanced..

Also, for anyone looking for "easy mode" DX12, at least look at DirectXTK12, which is a DX12 port of the 11-oriented https://github.com/Microsoft/DirectXTK. Unfortunate that they're separate projects since so much code is shared, but it is what it is.

The nice bit is that you can compare the implementation of common types like SpriteBatch to really get a feel for what the API and conceptual differences are between DX11 and DX12.

I don't think there's any particular advantage to using DirectXTK12 rather than just using DirectXTK(11) that I know of. The DXTK12 is not doing all the optimizations necessary to fully make up for the lack of the DX11 driver magic that you want in a "real" graphics engine, but it does go a fair bit further than most of the sample/demo code I've seen to date.

Sean Middleditch – Game Systems Engineer – Join my team!

This topic is closed to new replies.

Advertisement