Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Direct3D
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Direct3D 12== {{see also|DirectX Raytracing}} '''Direct3D 12'''<ref name="anand12">{{cite web |url=http://www.anandtech.com/show/7889/microsoft-announces-directx-12-low-level-graphics-programming-comes-to-directx/2 |title=AnandTech β Microsoft Announces DirectX 12: Low-Level Graphics Programming Comes To DirectX |author=Ryan Smith |access-date=30 September 2014}}</ref> allows a lower level of hardware abstraction than earlier versions, enabling future applications to significantly improve multithreaded scaling and decrease CPU utilization. This is achieved by better matching the Direct3D abstraction layer with the underlying hardware, through new features such as Indirect Drawing, descriptor tables, concise pipeline state objects, and draw call bundles. Reducing driver overhead is the main attraction of Direct3D 12, similarly to AMD's [[Mantle (API)|Mantle]].<ref name="anand12"/> In the words of its lead developer Max McMullen, the main goal of Direct3D 12 is to achieve "console-level efficiency" and improved CPU parallelism.<ref>{{Cite web|url=https://www.intel.com/content/www/us/en/developer/overview.html|title=Intel Developer Zone|website=Intel|accessdate=December 21, 2022}}</ref><ref>{{cite web |url=https://software.intel.com/en-us/blogs/2014/07/17/direct3d-overview-part-1-closer-to-the-metal |title=Direct3D 12 Overview Part 1: 'Closer To The Metal' |access-date=2 October 2014}}</ref><ref>first two minutes of https://channel9.msdn.com/Events/Build/2014/3-564</ref> Although Nvidia has announced broad support for Direct3D 12, they were also somewhat reserved about the universal appeal of the new API, noting that while game engine developers may be enthusiastic about directly managing GPU resources from their application code, "a lot of [other] folks wouldn't" be happy to have to do that.<ref>{{cite web |url=http://techreport.com/review/26239/a-closer-look-at-directx-12/3 |title=A closer look at DirectX 12 β The Tech Report β Page 3 |date=March 31, 2014 |access-date=30 September 2014}}</ref> Some new hardware features are also in Direct3D 12,<ref name="redgamingtech.com"/><ref name="ReferenceB">{{cite web |url=http://www.anandtech.com/show/8544/microsoft-details-direct3d-113-12-new-features |title=AnandTech β Microsoft Details Direct3D 11.3 & 12 New Rendering Features |author=Ryan Smith |access-date=30 September 2014}}</ref><ref>{{Cite web |url=http://static.gamespot.com/uploads/original/823/8237367/2484602-pixel+ordered+uav.jpg |title=Archived copy |access-date=2014-09-19 |archive-url=https://web.archive.org/web/20180430181827/http://static.gamespot.com/uploads/original/823/8237367/2484602-pixel+ordered+uav.jpg |archive-date=2018-04-30 |url-status=dead}}</ref> including Shader Model 5.1,<ref name="ReferenceE">{{cite web | url=https://msdn.microsoft.com/en-us/library/windows/desktop/dn933277(v=vs.85).aspx | title=Shader Model 5.1 - Win32 apps | date=November 20, 2019 }}</ref> Volume Tiled Resources(Tier 2),<ref name="ReferenceE"/> Shader Specified Stencil Reference Value, Typed UAV Load, Conservative Rasterization(Tier 1), better collision and culling with Conservative Rasterization, Rasterizer Ordered Views (ROVs), Standard Swizzles, Default Texture Mapping, Swap Chains, [[swizzled textures|swizzled resources]] and [[compressed textures|compressed resources]],<ref>{{cite web |url=http://www.pcworld.com/article/2110085/next-gen-directx-12-graphics-tech-revealed-hitting-microsoft-platforms-in-2015.html |title=Meet the future of PC graphics: Microsoft reveals faster, console-like DirectX 12 |date=20 March 2014 |work=PCWorld |access-date=30 September 2014}}</ref> additional [[blend mode]]s,<ref>{{cite web|url=http://techreport.com/news/26210/directx-12-will-also-add-new-features-for-next-gen-gpus|title=DirectX 12 will also add new features for next-gen GPUs|date=March 21, 2014|access-date=30 September 2014}}</ref> programmable blend and efficient [[order-independent transparency]] (OIT) with pixel ordered UAV.<ref>{{cite news |last=Kowaliski |first=Cyril |date=March 21, 2014 |title=DirectX 12 will also add new features for next-gen GPUs |url=http://techreport.com/news/26210/directx-12-will-also-add-new-features-for-next-gen-gpus |newspaper=The Tech Report |access-date=April 1, 2014}}</ref> Pipeline state objects (PSOs)<ref>{{Cite web|url=https://www.intel.com/content/www/us/en/developer/library.html|title=Technical Library|website=Intel|accessdate=December 21, 2022}}</ref> have evolved from Direct3D 11, and the new concise pipeline states mean that the process has been simplified. DirectX 11 offered flexibility in how its states could be altered, to the detriment of performance. Simplifying the process and unifying the pipelines (e.g. pixel shader states) lead to a more streamlined process, significantly reducing the overheads and allowing the graphics card to draw more calls for each frame. Once created, the PSO is immutable.<ref>{{Cite web |last=stevewhims |date=2021-12-30 |title=Pipelines and Shaders with Direct3D 12 - Win32 apps |url=https://learn.microsoft.com/en-us/windows/win32/direct3d12/pipelines-and-shaders-with-directx-12 |access-date=2023-12-19 |website=learn.microsoft.com |language=en-us}}</ref> Root signatures introduce configurations to link command lists to resources required by shaders. They define the layout of resources that shaders will use and specifies what resources will be bound to the pipeline. A graphics command list has both a graphics and compute root signature, while a compute command list will have only a compute root signature. These root signatures are completely independent of each other. While the root signature lays out the types of data for shaders to use, it does not define or map the actual memory or data.<ref name=":3">{{Cite web |last=stevewhims |date=2023-02-06 |title=Root Signatures Overview - Win32 apps |url=https://learn.microsoft.com/en-us/windows/win32/direct3d12/root-signatures-overview |access-date=2023-12-19 |website=learn.microsoft.com |language=en-us}}</ref> Root parameters are one type of entry in a root signature. The actual values of the root parameters that are modified at runtime are called root arguments. This is the data that the shaders read.<ref name=":3" /> Within Direct3D 11, the commands are sent from the CPU to the GPU one by one, and the GPU works through these commands sequentially. This means that commands are bottlenecked by the speed at which the CPU could send these commands in a linear fashion. Within DirectX 12 these commands are sent as command lists, containing all the required information within a single package. The GPU is then capable of computing and executing this command in one single process, without having to wait on any additional information from the CPU. Within these command lists are bundles. Where previously commands were just taken, used, and then forgotten by the GPU, bundles can be reused. This decreases the workload of the GPU and means repeated assets can be used much faster. While resource binding is fairly convenient in Direct3D 11 for developers at the moment, its inefficiency means several modern hardware capabilities are being drastically underused. When a game engine needed resources in DX11, it had to draw the data from scratch every time, meaning repeat processes and unnecessary uses. In Direct3D 12, descriptor heaps and tables mean the most often used resources can be allocated by developers in tables, which the GPU can quickly and easily access. This can contribute to better performance than Direct3D 11 on equivalent hardware, but it also entails more work for the developer. Dynamic Heaps are also a feature of Direct3D 12.<ref>{{cite web |url=https://software.intel.com/en-us/blogs/2014/08/27/direct3d-12-overview-part-7-dynamic-heaps |title=Direct3D 12 Overview Part 7: Dynamic Heaps |access-date=2 October 2014}}</ref> Direct3D 12 features explicit multi-adapter support, allowing the explicit control of multiple GPUs configuration systems. Such configurations can be built with graphics adapter of the same hardware vendor as well of different hardware vendor together.<ref>{{cite web |url=https://msdn.microsoft.com/en-us/library/windows/desktop/dn933253(v=vs.85).aspx |title=Multi-Adapter |access-date=August 3, 2016 |archive-url=https://web.archive.org/web/20160914035639/https://msdn.microsoft.com/en-us/library/windows/desktop/dn933253(v=vs.85).aspx |archive-date=September 14, 2016 |url-status=dead}}</ref> An experimental support of D3D 12 for Windows 7 SP1 has been released by Microsoft in 2019 via a dedicated NuGet package.<ref>{{Cite web|url=https://aka.ms/d3d12on7|title = Porting DirectX 12 games to Windows 7|date = August 21, 2019}}</ref><ref>{{Cite web|url=https://microsoft.github.io/DirectX-Specs/d3d/D3D12onWin7.html|title = DirectX-Specs}}</ref><ref>{{Cite web|url=https://www.nuget.org/packages/Microsoft.Direct3D.D3D12On7|title = Microsoft.Direct3D.D3D12On7 1.1.0}}</ref> * '''Direct3D 12 version 1607''' β With the Windows 10 anniversary update (version 1607), released on August 2, 2016, the Direct3D 12 runtime has been updated to support constructs for explicit multithreading and inter-process communication, allowing developers to take advantage of modern massively parallel GPUs.<ref>[https://msdn.microsoft.com/en-us/library/mt733232(v=vs.85).aspx HLSL Shader Model 6.0]</ref> Other features include updated root signatures version 1.1, as well as support for [[HDR10]] format and [[variable refresh rate]]s. * '''Direct3D 12 version 1703''' β With the Windows 10 Creators Update (version 1703), released on April 11, 2017, the Direct3D 12 runtime has been updated to support Shader Model 6.0 and [[DirectX Intermediate Language|DXIL]]. and Shader Model 6.0 requires Windows 10 Anniversary Update (version 1607), WDDM 2.1. New graphical features are Depth Bounds Testing and Programmable MSAA.<ref name=":0" /> * '''Direct3D 12 version 1709''' β Direct3D in Windows 10 Fall Creators Update (version 1709), released on October 17, 2017, includes improved debugging.<ref name=":0" /> * '''Direct3D 12 version 1809''' β Windows 10 October 2018 Update (version 1809) brings support for [[DirectX Raytracing]] so GPUs can benefit from its API. * '''Direct3D 12 version 1903''' β Windows 10 May 2019 Update (version 1903) brings support for DirectML and [[Neural Processing Unit|NPU]]s.<ref name="directml" /><ref name="directml2" /> DirectML can support both [[compute shader]]s and [[tensor shader]]s.{{Citation needed|date=January 2025}} * '''Direct3D 12 version 2004''' β Windows 10 May 2020 Update (version 2004) brings support for [[DirectX 12 Ultimate]], Mesh & Amplification Shaders,<ref name=":1" /> Sampler Feedback,<ref>{{cite news|url=https://devblogs.microsoft.com/directx/coming-to-directx-12-sampler-feedback-some-useful-once-hidden-data-unlocked/|title=Coming to DirectX 12β Sampler Feedback: some useful once-hidden data, unlocked |work=DirectX Developer Blog|access-date=2019-11-04|language=en-US}}</ref> as well DirectX Raytracing Tier 1.1<ref>{{cite news |url=https://devblogs.microsoft.com/directx/dxr-1-1/ |title=DirectX Raytracing (DXR) Tier 1.1 |work=DirectX Developer Blog |access-date=2019-11-06 |language=en-US}}</ref> and memory allocation improvements.<ref>{{cite news |url=https://devblogs.microsoft.com/directx/coming-to-directx-12-more-control-over-memory-allocation/ |title=Coming to DirectX 12: More control over memory allocation |work=DirectX Developer Blog |access-date=2019-11-11 |language=en-US}}</ref> * '''Direct3D 12 version 21H2''' β Windows 10 version 21H2 and Windows 11 version 21H2 brings support for [[DirectStorage]].
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)