fbpx
Wikipedia

Direct3D

Direct3D is a graphics application programming interface (API) for Microsoft Windows. Part of DirectX, Direct3D is used to render three-dimensional graphics in applications where performance is important, such as games. Direct3D uses hardware acceleration if it is available on the graphics card, allowing for hardware acceleration of the entire 3D rendering pipeline or even only partial acceleration. Direct3D exposes the advanced graphics capabilities of 3D graphics hardware, including Z-buffering,[1] W-buffering,[2] stencil buffering, spatial anti-aliasing, alpha blending, color blending, mipmapping, texture blending,[3][4] clipping, culling, atmospheric effects, perspective-correct texture mapping, programmable HLSL shaders[5] and effects.[6] Integration with other DirectX technologies enables Direct3D to deliver such features as video mapping, hardware 3D rendering in 2D overlay planes, and even sprites, providing the use of 2D and 3D graphics in interactive media ties.

Direct3D
Developer(s)Microsoft
Initial releaseJune 2, 1996; 27 years ago (1996-06-02)
Stable release
12 / July 29, 2015; 8 years ago (2015-07-29)
Operating systemMicrosoft Windows, Windows CE, Windows Embedded, Xbox system software
Platformx86, ARM
Type3D computer graphics API
LicenseProprietary
Websitelearn.microsoft.com/en-us/windows/win32/direct3d

Direct3D contains many commands for 3D computer graphics rendering; however, since version 8, Direct3D has superseded the DirectDraw framework and also taken responsibility for the rendering of 2D graphics.[7] Microsoft strives to continually update Direct3D to support the latest technology available on 3D graphics cards. Direct3D offers full vertex software emulation but no pixel software emulation for features not available in hardware. For example, if software programmed using Direct3D requires pixel shaders and the video card on the user's computer does not support that feature, Direct3D will not emulate it, although it will compute and render the polygons and textures of the 3D models, albeit at a usually degraded quality and performance compared to the hardware equivalent. The API does include a Reference Rasterizer (or REF device), which emulates a generic graphics card in software, although it is too slow for most real-time 3D applications and is typically only used for debugging. A new real-time software rasterizer, WARP, designed to emulate the complete feature set of Direct3D 10.1, is included with Windows 7 and Windows Vista Service Pack 2 with the Platform Update; its performance is said to be on par with lower-end 3D cards on multi-core CPUs.[8]

As part of DirectX, Direct3D is available for Windows 95 and above, and is the base for the vector graphics API on the different versions of Xbox console systems. The Wine compatibility layer, a free software reimplementation of several Windows APIs, includes an implementation of Direct3D.

Direct3D's main competitor is Khronos' OpenGL and its follow-on Vulkan. Fahrenheit was an attempt by Microsoft and SGI to unify OpenGL and Direct3D in the 1990s, but was eventually canceled.

Overview edit

  • Direct3D 6.0 – Multitexturing
  • Direct3D 7.0 – Hardware Transformation, Clipping and Lighting (TCL/T&L)
  • Direct3D 8.0 – Pixel Shader 1.0/1.1 & Vertex Shader 1.0/1.1[9]
  • Direct3D 8.1 – Pixel Shader 1.2/1.3/1.4[10][11][12]
  • Direct3D 9.0 – Shader Model 2.0 (Pixel Shader 2.0 & Vertex Shader 2.0)
  • Direct3D 9.0a – Shader Model 2.0a (Pixel Shader 2.0a & Vertex Shader 2.0a)
  • Direct3D 9.0b – Pixel Shader 2.0b
  • Direct3D 9.0c – last version supported for Windows 98 (early releases)[13] and for Windows 2000/XP (all releases);[14] Shader Model 3.0 (Pixel Shader 3.0 & Vertex Shader 3.0)
  • Direct3D 9.0L – Windows Vista only; Direct3D 9.0c, Shader Model 3.0, Windows Graphics Foundation 1.0, DXVA 1.0, GPGPU
  • Direct3D 10.0 – Windows Vista/Windows 7; Shader Model 4.0, Windows Graphics Foundation 2.0, DXVA 2.0
  • Direct3D 10.1 – Windows Vista SP1/Windows 7; Shader Model 4.1, Windows Graphics Foundation 2.1, DXVA 2.1
  • Direct3D 11.0 – Windows Vista SP2/Windows 7; Shader Model 5.0, Tessellation, Multithreaded rendering, Compute shaders, implemented by hardware and software running Direct3D 9/10/10.1
  • Direct3D 11.1 – Windows 8 (partially supported on Windows 7 SP1 also); Stereoscopic 3D Rendering
  • Direct3D 11.2 – Windows 8.1; Tiled resources
  • Direct3D 11.3 – Windows 10
  • Direct3D 12.0 – Windows 10; low-level rendering API, Shader Model 5.1 and 6.0

Direct3D 2.0 and 3.0 edit

In 1992, Servan Keondjian and Doug Rabson started a company named RenderMorphics, which developed a 3D graphics API named Reality Lab, which was used in medical imaging and CAD software.[15] Two versions of this API were released.[16] Microsoft bought RenderMorphics in February 1995, bringing Keondjian on board to implement a 3D graphics engine for Windows 95.[17] The first version of Direct3D shipped in DirectX 2.0 (June 2, 1996) and DirectX 3.0 (September 26, 1996).

Direct3D initially implemented an "immediate mode" 3D API and layered upon it a "retained mode" 3D API.[18] Both types of API were already offered with the second release of Reality Lab before Direct3D was released.[16] Like other DirectX APIs, such as DirectDraw, both were based on COM. The retained mode API was a scene graph API that attained little adoption. Game developers clamored for more direct control of the hardware's activities than the Direct3D retained mode could provide. Only two games that sold a significant volume, Lego Island and Lego Rock Raiders, were based on the Direct3D retained mode, so Microsoft did not update the retained mode API after DirectX 3.0.

For DirectX 2.0 and 3.0, the Direct3D immediate mode used an "execute buffer" programming model that Microsoft hoped hardware vendors would support directly. Execute buffers were intended to be allocated in hardware memory and parsed by the hardware to perform the 3D rendering. They were considered extremely awkward to program at the time, however, hindering adoption of the new API and prompting calls for Microsoft to adopt OpenGL as the official 3D rendering API for games as well as workstation applications.[19] (see OpenGL vs. Direct3D)

Rather than adopt OpenGL as a gaming API, Microsoft chose to continue improving Direct3D, not only to be competitive with OpenGL, but to compete more effectively with other proprietary APIs such as 3dfx's Glide.

From the beginning, the immediate mode also supported Talisman's tiled rendering with the BeginScene/EndScene methods of the IDirect3DDevice interface.

Direct3D 4.0 edit

No substantive changes were planned to Direct3D for DirectX 4.0, which was scheduled to ship in late 1996 and then canceled.[20]

Direct3D 5.0 edit

In December 1996, a team in Redmond took over development of the Direct3D Immediate Mode, while the London-based RenderMorphics team continued work on the Retained Mode. The Redmond team added the DrawPrimitive API that eliminated the need for applications to construct execute buffers, making Direct3D more closely resemble other immediate mode rendering APIs such as Glide and OpenGL. The first beta of DrawPrimitive shipped in February 1997,[21] and the final version shipped with DirectX 5.0 in August 1997.[22]

Besides introducing an easier-to-use immediate mode API, DirectX 5.0 added the SetRenderTarget method that enabled Direct3D devices to write their graphical output to a variety of DirectDraw surfaces.[23]

Direct3D 6.0 edit

DirectX 6.0 (released in August, 1998) introduced numerous features to cover contemporary hardware (such as multitexture[24] and stencil buffers) as well as optimized geometry pipelines for x87, SSE and 3DNow! and optional texture management to simplify programming.[25] Direct3D 6.0 also included support for features that had been licensed by Microsoft from specific hardware vendors for inclusion in the API, in exchange for the time-to-market advantage to the licensing vendor. S3 texture compression support was one such feature, renamed as DXTC for purposes of inclusion in the API. Another was TriTech's proprietary bump mapping technique. Microsoft included these features in DirectX, then added them to the requirements needed for drivers to get a Windows logo to encourage broad adoption of the features in other vendors' hardware.

A minor update to DirectX 6.0 came in the February, 1999 DirectX 6.1 update. Besides adding DirectMusic support for the first time, this release improved support for Intel Pentium III 3D extensions.[26]

A confidential memo sent in 1997[27] shows Microsoft planning to announce full support for Talisman in DirectX 6.0, but the API ended up being canceled (See the Microsoft Talisman page for details).

Direct3D 7.0 edit

DirectX 7.0 (released in September, 1999) introduced the .dds texture format[28] and support for transform and lighting hardware acceleration[29] (first available on PC hardware with Nvidia's GeForce 256), as well as the ability to allocate vertex buffers in hardware memory. Hardware vertex buffers represent the first substantive improvement over OpenGL in DirectX history. Direct3D 7.0 also augmented DirectX support for multitexturing hardware, and represents the pinnacle of fixed-function multitexture pipeline features: although powerful, it was so complicated to program that a new programming model was needed to expose the shading capabilities of graphics hardware.

Direct3D 8.0 edit

DirectX 8.0, released in November, 2000, introduced programmability in the form of vertex and pixel shaders, enabling developers to write code without worrying about superfluous hardware state.[30] The complexity of the shader programs depended on the complexity of the task, and the display driver compiled those shaders to instructions that could be understood by the hardware. Direct3D 8.0 and its programmable shading capabilities were the first major departure from an OpenGL-style fixed-function architecture, where drawing is controlled by a complicated state machine. Direct3D 8.0 also eliminated DirectDraw as a separate API.[31][32] Direct3D subsumed all remaining DirectDraw API calls still needed for application development, such as Present(), the function used to display rendering results.

Direct3D was not considered to be user friendly, but as of DirectX version 8.1, many usability problems were resolved. Direct3D 8 contained many powerful 3D graphics features, such as vertex shaders, pixel shaders, fog, bump mapping and texture mapping.

Direct3D 9 edit

Direct3D 9.0,[33] released in December 2002, added a new version of the High Level Shader Language[34][35] support for floating-point texture formats, Multiple Render Targets (MRT),[36] Multiple-Element Textures,[37] texture lookups in the vertex shader and stencil buffer techniques.[38]

Direct3D 9Ex Direct3D 9Ex improvements - Win32 apps

An extension only available in Windows Vista and newer (7, 8, 8.1, 10, and 11), called Direct3D 9Ex[39] (previously versioned 9.0L (L – codename Windows Longhorn)), allows the use of the advantages offered by Windows Vista's Windows Display Driver Model (WDDM) and is used for Windows Aero.[40] Direct3D 9Ex, in conjunction with DirectX 9 class WDDM drivers allows graphics memory to be virtualized and paged out to system memory, allows graphics operations to be interrupted and scheduled and allow DirectX surfaces to be shared across processes.[41] Direct3D 9Ex was previously known as version 1.0 of Windows Graphics Foundation (WGF).

Direct3D 10 edit

Windows Vista includes a major update to the Direct3D API. Originally called WGF 2.0 (Windows Graphics Foundation 2.0), then DirectX 10 and DirectX Next. Direct3D 10[42] features an updated shader model 4.0 and optional interruptibility for shader programs.[41] In this model shaders still consist of fixed stages as in previous versions, but all stages support a nearly unified interface, as well as a unified access paradigm for resources such as textures and shader constants. The language itself has been extended to be more expressive, including integer operations, a greatly increased instruction count, and more C-like language constructs. In addition to the previously available vertex and pixel shader stages, the API includes a geometry shader stage that breaks the old model of one vertex in/one vertex out, to allow geometry to be generated from within a shader, thus allowing for complex geometry to be generated entirely by the graphics hardware.

Windows XP is not supported by DirectX 10.0 and above.

Furthermore, Direct3D 10 dropped support for the retained mode API which had been a part of Direct3D since the beginning making Windows Vista incompatible with 3D games that had used the retained mode API as their rendering engine.[43]

Unlike prior versions of the API, Direct3D 10 no longer uses "capability bits" (or "caps") to indicate which features are supported on a given graphics device. Instead, it defines a minimum standard of hardware capabilities which must be supported for a display system to be "Direct3D 10 compatible". This is a significant departure, with the goal of streamlining application code by removing capability-checking code and special cases based on the presence or absence of specific capabilities.

Because Direct3D 10 hardware was comparatively rare after the initial release of Windows Vista and because of the massive installed base of non-Direct3D 10 compatible graphics cards, the first Direct3D 10-compatible games still provide Direct3D 9 render paths. Examples of such titles are games originally written for Direct3D 9 and ported to Direct3D 10 after their release, such as Company of Heroes, or games originally developed for Direct3D 9 with a Direct3D 10 path retrofitted later during their development, such as Hellgate: London or Crysis. The DirectX 10 SDK became available in February 2007.[44]

Direct3D 10.0 edit

Direct3D 10.0 level hardware must support the following features: the ability to process entire primitives in the new geometry-shader stage, the ability to output pipeline-generated vertex data to memory using the stream-output stage, multisampled alpha-to-coverage support, readback of a depth/stencil surface or a multisampled resource once it is no longer bound as a render target, full HLSL integration – all Direct3D 10 shaders are written in HLSL and implemented with the common-shader core, integer and bitwise shader operations, organization of pipeline state into 5 immutable state objects, organization of shader constants into constant buffers, increased number of render targets, textures, and samplers, no shader length limit, new resource types and resource formats,[45] layered runtime/API layers,[46] option to perform per-primitive material swapping and setup using a geometry shader, increased generalization of resource access using a view, removed legacy hardware capability bits (caps).

  • Fixed pipelines[47] are being done away with in favor of fully programmable pipelines (often referred to as unified pipeline architecture), which can be programmed to emulate the same.
  • New state object to enable (mostly) the CPU to change states efficiently.
  • Shader model 4.0 enhances the programmability of the graphics pipeline. It adds instructions for integer and bitwise calculations.
  • The common shader core[48] provides a full set of IEEE-compliant 32-bit integer and bitwise operations. These operations enable a new class of algorithms in graphics hardware—examples include compression and packing techniques, FFTs, and bitfield program-flow control.
  • Geometry shaders,[49][50] which work on adjacent triangles which form a mesh.
  • Texture arrays enable swapping of textures in GPU without CPU intervention.
  • Predicated rendering allows drawing calls to be ignored based on some other conditions. This enables rapid occlusion culling, which prevents objects from being rendered if it is not visible or too far to be visible.
  • Instancing 2.0 support, allowing multiple instances of similar meshes, such as armies, or grass or trees, to be rendered in a single draw call, reducing the processing time needed for multiple similar objects to that of a single one.[51]

Direct3D 10.1 edit

Direct3D 10.1[52] was announced by Microsoft shortly after the release of Direct3D 10 as a minor update. The specification was finalized with the release of November 2007 DirectX SDK and the runtime was shipped with the Windows Vista SP1, which is available since mid-March 2008.

Direct3D 10.1 sets a few more image quality standards for graphics vendors, and gives developers more control over image quality.[53][54] Features include finer control over anti-aliasing (both multisampling and supersampling with per sample shading and application control over sample position) and more flexibilities to some of the existing features (cubemap arrays and independent blending modes). Direct3D 10.1 level hardware must support the following features: Multisampling has been enhanced to generalize coverage based transparency and make multisampling work more effectively with multi-pass rendering, better culling behavior – Zero-area faces are automatically culled; this affects wireframe rendering only, independent blend modes per render target, new sample-frequency pixel shader execution with primitive rasterization, increased pipeline stage bandwidth, both color and depth/stencil MSAA surfaces can now be used with CopyResource as either a source or destination, MultisampleEnable only affects line rasterization (points and triangles are unaffected), and is used to choose a line drawing algorithm. This means that some multisample rasterization from Direct3D 10 are no longer supported, Texture Sampling – sample_c and sample_c_lz instructions are defined to work with both Texture2DArrays and TextureCubeArrays use the Location member (the alpha component) to specify an array index, support for TextureCubeArrays.

  • Mandatory 32-bit floating point filtering.
  • Floating Point Rules – Uses the same IEEE-754 rules for floating-point EXCEPT 32-bit floating point operations have been tightened to produce a result within 0.5 unit-last-place (0.5 ULP) of the infinitely precise result. This applies to addition, subtraction, and multiplication. (accuracy to 0.5 ULP for multiply, 1.0 ULP for reciprocal).
  • Formats – The precision of float16 blending has increased to 0.5 ULP. Blending is also required for UNORM16/SNORM16/SNORM8 formats.
  • Format Conversion while copying between certain 32/64/128 bit prestructured, typed resources and compressed representations of the same bit widths.
  • Mandatory support for 4x MSAA for all render targets except R32G32B32A32 and R32G32B32.[55]
  • Shader model 4.1

Unlike Direct3D 10 which strictly required Direct3D 10-class hardware and driver interfaces, Direct3D 10.1 runtime can run on Direct3D 10.0 hardware using a concept of "feature levels",[56][57][58] but new features are supported exclusively by new hardware which expose feature level 10_1.

The only available Direct3D 10.1 hardware as of June 2008 were the Radeon HD 3000 series and Radeon HD 4000 series from ATI; in 2009, they were joined by Chrome 430/440GT GPUs from S3 Graphics and select lower-end models in GeForce 200 series from Nvidia. In 2011, Intel chipsets started supporting Direct3D 10.1 with the introduction of Intel HD Graphics 2000 (GMA HD).

Direct3D 11 edit

Direct3D 11[59] was released as part of Windows 7. It was presented at Gamefest 2008 on July 22, 2008 and demonstrated at the Nvision 08 technical conference on August 26, 2008.[60][61] The Direct3D 11 Technical Preview has been included in November 2008 release of DirectX SDK.[62] AMD previewed working DirectX11 hardware at Computex on June 3, 2009, running some DirectX 11 SDK samples.[63]

The Direct3D 11 runtime is able to run on Direct3D 9 and 10.x-class hardware and drivers using the concept of "feature levels", expanding on the functionality first introduced in Direct3D 10.1 runtime.[56][64][65] Feature levels allow developers to unify the rendering pipeline under Direct3D 11 API and make use of API improvements such as better resource management and multithreading even on entry-level cards, though advanced features such as new shader models and rendering stages will only be exposed on up-level hardware.[64][66] There are three "10 Level 9" profiles which encapsulate various capabilities of popular DirectX 9.0a cards, and Direct3D 10, 10.1, and 11 each have a separate feature level; each upper level is a strict superset of a lower level.[67]

Tessellation was earlier considered for Direct3D 10, but was later abandoned. GPUs such as Radeon R600 feature a tessellation engine that can be used with Direct3D 9/10/10.1[68][69][70] and OpenGL,[71] but it's not compatible with Direct3D 11 (according to Microsoft). Older graphics hardware such as Radeon 8xxx, GeForce 3/4 had support for another form of tesselation (RT patches, N patches) but those technologies never saw substantial use. As such, their support was dropped from newer hardware.

Microsoft has also hinted at other features such as order independent transparency, which was never exposed by the Direct3D API but supported almost transparently by early Direct3D hardware such as Videologic's PowerVR line of chips.

Direct3D 11.0 edit

Direct3D 11.0 features include: Support for Shader Model 5.0, Dynamic shader linking, addressable resources, additional resource types,[72] subroutines, geometry instancing, coverage as pixel shader input, programmable interpolation of inputs, new texture compression formats (1 new LDR format and 1 new HDR format), texture clamps to limit WDDM preload, require 8-bits of subtexel and sub-mip precision on texture filtering, 16K texture limits, Gather4(support for multi-component textures, support for programmable offsets), DrawIndirect, conservative oDepth, Depth Bias,[73][74] addressable stream output, per-resource mipmap clamping, floating-point viewports, shader conversion instructions, improved multithreading.

  • Shader Model 5[75]
  • Support for Tessellation[76] and Tessellation Shaders[77] to increase at runtime the number of visible polygons from a low detail polygonal model
  • Multithreaded rendering — to render to the same Direct3D device object from different threads for multi core CPUs
  • Compute shaders — which exposes the shader pipeline for non-graphical tasks such as stream processing and physics acceleration, similar in spirit to what OpenCL, Nvidia CUDA, ATI Stream, and HLSL Shader Model 5 achieve among others.[60][61]
  • Mandatory support for 4x MSAA for all render targets and 8x MSAA for all render target formats except R32G32B32A32 formats.[55]

Other notable features are the addition of two new texture compression algorithms for more efficient packing of high quality and HDR/alpha textures and an increased texture cache.

First seen in the Release Candidate version, Windows 7 integrates the first released Direct3D 11 support. The Platform Update for Windows Vista includes full-featured Direct3D 11 runtime and DXGI 1.1 update, as well as other related components from Windows 7 like WARP, Direct2D, DirectWrite, and WIC.[78][79]

Direct3D 11.1 edit

Direct3D 11.1[80][81] is an update to the API that ships with Windows 8.[82][83] The Direct3D runtime in Windows 8 features DXGI 1.2[84] and requires new WDDM 1.2[85] device drivers.[86] Preliminary version of the Windows SDK for Windows 8 Developer Preview was released on September 13, 2011.

The new API features shader tracing and HLSL compiler enhancements, support for minimum precision HLSL scalar data types,[87] UAVs (Unordered Access Views) at every pipeline stage, target-independent rasterization (TIR), option to map SRVs of dynamic buffers with NO_OVERWRITE, shader processing of video resources, option to use logical operations in a render target, option to bind a subrange of a constant buffer to a shader and retrieve it, option to create larger constant buffers than a shader can access, option to discard resources and resource views, option to change subresources with new copy options, option to force the sample count to create a rasterizer state, option to clear all or part of a resource view, option to use Direct3D in Session 0 processes, option to specify user clip planes in HLSL on feature level 9 and higher, support for shadow buffer on feature level 9, support for video playback, extended support for shared Texture2D resources, and on-the-fly swapping between Direct3D 10 and 11 contexts and feature levels. Direct3D 11.1 includes new feature level 11_1, which brings minor updates to the shader language, such as larger constant buffers and optional double-precision instructions, as well as improved blending modes and mandatory support for 16-bit color formats to improve the performance of entry-level GPUs such as Intel HD Graphics.[86][88] WARP has been updated to support feature level 11_1.

The Platform Update for Windows 7 includes a limited set of features from Direct3D 11.1, though components that depend on WDDM 1.2 – such as feature level 11_1 and its related APIs, or quad buffering for stereoscopic rendering – are not present.[89][90]

Direct3D 11.2 edit

Direct3D 11.2[91][92][93] was shipped with Windows 8.1.[94][95] New hardware features require DXGI 1.3[96] with WDDM 1.3[97] drivers and include runtime shader modification and linking, Function linking graph(FLG), inbox HLSL compiler, option to annotate graphics commands.[98] Feature levels 11_0 and 11_1 introduce optional support for tiled resources with shader level of detail clamp (Tier2).[99] The latter feature effectively provides control over the hardware page tables present in many current GPUs.[100] WARP was updated to fully support the new features.[94][101] There is no feature level 11_2 however; the new features are dispersed across existing feature levels. Those that are hardware-dependent can be checked individually via CheckFeatureSupport.[95][102] Some of the "new" features in Direct3D 11.2 actually expose some old hardware features in a more granular way; for example D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT exposes partial support for instancing on feature level 9_1 and 9_2 hardware, otherwise fully supported from feature level 9_3 onward.[103]

Direct3D 11.X

Direct3D 11.X is a superset of DirectX 11.2 running on the Xbox One.[104][105] It includes some features, such as draw bundles, that were later announced as part of DirectX 12.[106]

Direct3D 11.3 edit

Direct3D 11.3[107] shipped in July 2015 with Windows 10; it includes minor rendering features from Direct3D 12, while keeping the overall structure of the Direct3D 11.x API.[108][109][110] Direct3D 11.3 introduces optional Shader Specified Stencil Reference Value, Typed Unordered Access View Loads, Rasterizer Ordered Views (ROVs), optional Standard Swizzle, optional Default Texture Mapping, Conservative Rasterization (out of three tiers),[111] optional Unified Memory Access (UMA) support, and additional Tiled Resources (tier 2) (Volume tiled resources).[112]

Direct3D 11.4 edit

  • Direct3D 11.4 version 1511 – Initial Direct3D 11.4 was introduced with Windows 10 Threshold 2 update (version 1511) improving external graphics adapters support and DXGI 1.5.[113]
  • Direct3D 11.4 version 1607 – Updated Direct3D 11.4 with Windows 10 Anniversary Update (version 1607) includes support WDDM 2.1 and for UHDTV HDR10 format (ST 2084) and variable refresh rates support for UWP applications.

Direct3D 12 edit

Direct3D 12[114] allows a lower level of hardware abstraction than earlier versions, enabling future games to significantly improve multithreaded scaling and decrease CPU utilization. This is achieved by better matching the Direct3D abstraction layer with the underlying hardware, by means of new features such as Indirect Drawing, descriptor tables, concise pipeline state objects, and draw call bundles. Reducing driver overhead is in fact the main attraction of Direct3D 12, similarly to AMD's Mantle;[114] 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.[115][116][117]

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.[118]

Some new hardware features are also in Direct3D 12,[110][119][120] including Shader Model 5.1,[121] Volume Tiled Resources(Tier 2),[121] 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 resources and compressed resources,[122] additional blend modes,[123] programmable blend and efficient order-independent transparency (OIT) with pixel ordered UAV.[124]

Pipeline state objects[125] 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.

Direct3D 12 also learned from AMD Mantle[citation needed] in command lists and bundles, aiming to ensure the CPU and GPU working together in a more balanced manner.

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.[126]

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.[127]

An experimental support of D3D 12 for Windows 7 SP1 has been released by Microsoft in 2019 via a dedicated NuGet package.[128][129][130]

  • 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.[131] Other features include updated root signatures version 1.1, as well as support for HDR10 format and variable refresh rates.
  • 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 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.[132]
  • Direct3D 12 version 1709 – Direct3D in Windows 10 Fall Creators Update (version 1709), released on October 17, 2017, includes improved debugging.[132]
  • 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 NPU.[133][134]
  • Direct3D 12 version 2004 – Windows 10 May 2020 Update (version 2004) brings support for Mesh & Amplification Shaders,[135] Sampler Feedback,[136] as well DirectX Raytracing Tier 1.1[137] and memory allocation improvements.[138]

Architecture edit

 
Abstract Layer

Direct3D is a Microsoft DirectX API subsystem component. The aim of Direct3D is to abstract the communication between a graphics application and the graphics hardware drivers. It is presented like a thin abstract layer at a level comparable to GDI (see attached diagram). Direct3D contains numerous features that GDI lacks.

Direct3D is an Immediate mode graphics API. It provides a low-level interface to every video card 3D function (transformations, clipping, lighting, materials, textures, depth buffering and so on). It once had a higher level Retained mode component, now officially discontinued.

Direct3D immediate mode presents three main abstractions: devices, resources and Swap Chains (see attached diagram). Devices are responsible for rendering the 3D scene. They provide an interface with different rendering capabilities. For example, the mono device provides white and black rendering, while the RGB device renders in color. There are four types of devices:

 
Device
  • Reference device: Simulates new functions not yet available in hardware. It is necessary to install the Direct3D SDK to use this device type.
  • Null reference device: Does nothing. This device is used when the SDK is not installed and a reference device is requested.
  • Pluggable software device: Performs software rendering. This device was introduced with DirectX 9.0.[139]

Every device contains at least one swap chain. A swap chain is made up of one or more back buffer surfaces. Rendering occurs in the back buffer.

Moreover, devices contain a collection of resources; specific data used during rendering. Each resource has four attributes:

  • Type: Determines the type of resource: surface, volume, texture, cube texture, volume texture, surface texture, index buffer or vertex buffer.
  • Pool:[140] Describes how the resource is managed by the runtime and where it is stored. In the Default pool the resource will exist only in device memory. Resources in the managed pool will be stored in system memory, and will be sent to the device when required. Resources in system memory pool will only exist in system memory. Finally, the scratch pool is basically the same as the system memory pool, but resources are not bound by hardware restrictions.
  • Format: Describes the layout of the resource data in memory. For example, D3DFMT_R8G8B8 format value means a 24 bits color depth (8 bits for red, 8 bits for green and 8 bits for blue).
  • Usage: Describes, with a collection of flag bits, how the resource will be used by the application. These flags dictate which resources are used in dynamic or static access patterns. Static resource values don't change after being loaded, whereas dynamic resource values may be modified.

Direct3D implements two display modes:

  • Fullscreen mode: The Direct3D application generates all of the graphical output for a display device. In this mode Direct3D automatically captures Alt-Tab and sets/restores screen resolution and pixel format without the programmer intervention. This also provides plenty of problems for debugging due to the 'Exclusive Cooperative Mode'.[citation needed]
  • Windowed mode: The result is shown inside the area of a window. Direct3D communicates with GDI to generate the graphical output in the display. Windowed mode can have the same level of performance as full-screen, depending on driver support.

Pipeline edit

 
Direct3D 11 graphics pipeline process

The Microsoft Direct3D 11 API defines a process to convert a group of vertices, textures, buffers, and state into an image on the screen. This process is described as a rendering pipeline with several distinct stages. The different stages of the Direct3D 11 pipeline are:[141]

  1. Input-Assembler:[142] Reads in vertex data from an application supplied vertex buffer and feeds them down the pipeline.
  2. Vertex Shader:[143] Performs operations on a single vertex at a time, such as transformations, skinning, or lighting.
  3. Hull-Shader:[144] Performs operations on sets of patch control points, and generates additional data known as patch constants.
  4. Tessellator:[145] Subdivides geometry to create higher-order representations of the hull.
  5. Domain-Shader:[146] Performs operations on vertices output by the tessellation stage, in much the same way as a vertex shader.
  6. Geometry Shader:[147] Processes entire primitives such as triangles, points, or lines. Given a primitive, this stage discards it, or generates one or more new primitives.
  7. Stream-Output:[148] Can write out the previous stage's results to memory. This is useful to recirculate data back into the pipeline.
  8. Rasterizer:[149][150] Converts primitives into pixels, feeding these pixels into the pixel shader. The Rasterizer may also perform other tasks such as clipping what is not visible, or interpolating vertex data into per-pixel data.
  9. Pixel Shader:[151] Determines the final pixel color to be written to the render target and can also calculate a depth value to be written to the depth buffer.
  10. Output-Merger:[152] Merges various types of output data (pixel shader values, alpha blending, depth/stencil...) to build the final result.

The pipeline stages illustrated with a round box are fully programmable. The application provides a shader program that describes the exact operations to be completed for that stage. Many stages are optional and can be disabled altogether.

Feature levels edit

In Direct3D 5 to 9, when new versions of the API introduced support for new hardware capabilities, most of them were optional – each graphics vendor maintained their own set of supported features in addition to the basic required functionality. Support for individual features had to be determined using "capability bits" or "caps", making cross-vendor graphics programming a complex task.

Direct3D 10 introduced a much simplified set of mandatory hardware requirements based on most popular Direct3D 9 capabilities which all supporting graphics cards had to adhere to, with only a few optional capabilities for supported texture formats and operations.

Direct3D 10.1 added a few new mandatory hardware requirements, and to remain compatible with 10.0 hardware and drivers, these features were encapsulated in two sets called "feature levels", with 10.1 level forming a superset of 10.0 level. As Direct3D 11.0, 11.1 and 12 added support for new hardware, new mandatory capabilities were further grouped in upper feature levels.[56]

Direct3D 11 also introduced "10level9", a subset of the Direct3D 10 API with three feature levels encapsulating various Direct3D 9 cards with WDDM drivers, and Direct3D 11.1 re-introduced a few optional features for all levels,[153] which were expanded in Direct3D 11.2 and later versions.

This approach allows developers to unify the rendering pipeline and use a single version of the API on both newer and older hardware, taking advantage of performance and usability improvements in the newer runtime.[60]

New feature levels are introduced with updated versions of the API and typically encapsulate:

  • major mandatory features – (Direct3D 11.0, 12),
  • a few minor features (Direct3D 10.1, 11.1), or
  • a common set of previously optional features (Direct3D 11.0 "10 level 9").

Each upper level is a strict superset of a lower level, with only a few new or previously optional features that move to the core functionality on an upper level.[67] More advanced features in a major revision of the Direct3D API such as new shader models and rendering stages are only exposed on up-level hardware.[65][66]

Separate capabilities exist to indicate support for specific texture operations and resource formats; these are specified per each texture format using a combination of capability flags.[154][155]

Feature levels use underscore as a delimiter (i.e. "12_1"), while API/runtime versions use dot (i.e. "Direct3D 11.4").

Direct3D 11 levels edit

In Direct3D 11.4 for Windows 10, there are nine feature levels provided by D3D_FEATURE_LEVEL structure; levels 9_1, 9_2 and 9_3 (collectively known as Direct3D 10 Level 9) re-encapsulate various features of popular Direct3D 9 cards, levels 10_0, 10_1 refer to respective legacy versions of Direct3D 10,[65] 11_0 and 11_1 reflects the feature introduced with Direct3D 11 and Direct3D 11.1 APIs and runtimes, while levels 12_0 and 12_1 correspond the new feature levels introduced with the Direct3D 12 API.

Feature levels in Direct3D 11.4
Feature level Mandatory hardware features Optional features
9_1 Shader Model 2.0 (vs_2_0/ps_2_0), 2K textures, volume textures, event queries, BC1-3 (a.k.a. DXTn), a few other specific capabilities.
9_2 Occlusion queries, floating-point formats (no blending), extended caps, all 9_1 features.
9_3 vs_2_a/ps_2_x with instancing and additional shader caps, 4K textures, multiple render targets (4 MRTs), floating-point blending (limited), all 9_2 features.
10_0 Shader Model 4.0, geometry shader, stream out, alpha-to-coverage, 8K textures, MSAA textures, 2-sided stencil, general render target views, texture arrays, BC4/BC5, full floating-point format support, all 9_3 features. Logical blend operations, DirectCompute (CS 4.0/4.1), extended pixel formats.[153]
10_1 Shader Model 4.1, cubemap arrays, extended MSAA, all 10_0 features.
11_0 Shader Model 5.0/5.1, hull & domain shaders, DirectCompute (CS 5.0/5.1), 16K textures, BC6H/BC7, extended pixel formats, all 10_1 features. UAV only rendering with force sample count, constant buffer offsetting and partial updates, double precision (64-bit) floating point operations, minimum floating-point precision (10- or 16-bit), min/max filtering.
11_1 Logical blend operations, target-independent rasterization, UAVs at every pipeline stage with increased slot count, UAV only rendering with force sample count, constant buffer offsetting and partial updates, all 11_0 features. Tiled resources (four tiers), conservative rasterization (three tiers), stencil reference value from Pixel Shader, rasterizer ordered views, typed UAV loads for additional formats.
12_0 Tiled Resources Tier 2 (Texture2D), Typed UAV Loads (additional formats).
12_1 Conservative Rasterization Tier 1, Rasterizer Ordered Views.

Direct3D 12 levels edit

Direct3D 12 for Windows 10 requires graphics hardware conforming to feature levels 11_0 and 11_1 which support virtual memory address translations and requires WDDM 2.0 drivers. There are two new feature levels, 12_0 and 12_1, which include some new features exposed by Direct3D 12 that are optional on levels 11_0 and 11_1.[156] Some previously optional features are realigned as baseline on levels 11_0 and 11_1. Shader Model 6.0 has been released with Windows 10 Creators Update and requires Windows 10 Anniversary Update, WDDM 2.1 drivers.

Direct3D 12 feature levels
Level Mandatory features Optional features
11_0 All mandatory 11_0 features from Direct3D 11, Shader Model 5.1, Resource binding Tier 1. Logical blend operations, double precision (64-bit) floating point operations, minimum floating point precision (10- or 16-bit).

Resource binding (three tiers), tiled resources (four tiers), conservative rasterization (three tiers), stencil reference value from Pixel Shader, rasterizer ordered views, typed UAV loads for additional formats, view instancing.

Shader Model 6.0–6.7

Metacommands, variable shading rate, raytracing, mesh shaders, sampler feedback.

Other optional features.[157]

UAVs at every pipeline stage, UAV only rendering with force sample count, constant buffer offsetting and partial updates.
11_1 Logical blend operations, target-independent rasterization, increased UAV slot count.
12_0 Resource Binding Tier 2, Tiled Resources Tier 2 (Texture2D), Typed UAV Loads (additional formats), Shader Model 6.0.
12_1 Conservative Rasterization Tier 1, Rasterizer Ordered Views.
12_2 DirectX 12 Ultimate: Shader Model 6.5, Raytracing Tier 1.1, Mesh Shaders, Variable-Rate Shading, Sampler Feedback, Resource Binding Tier 3, Tiled Resources Tier 3 (Texture3D), Conservative Rasterization Tier 3, 40-bit virtual address space.

Direct3D 12 introduces a revamped resource binding model which allows explicit control of memory. Abstract "resource view" objects[158] are now represented with resource descriptors, which are allocated using memory heaps and tables.[159] Resource Binding tiers define maximum number of resources that can be addressed using CBV (constant buffer view), SRV (shader resource view) and UAV (unordered access view), as well as texture sampler units. Tier 3 hardware allows fully bindless resources only restricted by the size of the descriptor heap, while Tier 1 and Tier 2 hardware impose some limits on the number of descriptors ("views") that can be used simultaneously.[160][161]

Resource binding tiers
Resource limits Tier 1 Tier 2 Tier 3
Descriptors in CBV/SRV/UAV heap 1M 1M >1M
CBVs per shader stage 14 14 full heap
SRVs per shader stage 128 full heap
UAVs across all stages 8, 64 64 full heap
Samplers per shader stage 16 full heap
64 slots on feature level 11_1 hardware

Multithreading edit

WDDM driver model in Windows Vista and higher supports arbitrarily large number of execution contexts (or threads) in hardware or in software. Windows XP only supported multitasked access to Direct3D, where separate applications could execute in different windows and be hardware accelerated, and the OS had limited control about what the GPU could do and the driver could switch execution threads arbitrarily.

The ability to execute the runtime in a multi-threaded mode has been introduced with Direct3D 11 runtime. Each execution context is presented with a resource view of the GPU. Execution contexts are protected from each other, however a rogue or badly written app can take control of the execution in the user-mode driver and could potentially access data from another process within GPU memory by sending modified commands. Though protected from access by another app, a well-written app still needs to protect itself against failures and device loss caused by other applications.

The OS manages the threads all by itself, allowing the hardware to switch from one thread to the other when appropriate, and also handles memory management and paging (to system memory and to disk) via integrated OS-kernel memory management.

Finer-grained context switching, i.e. being able to switch two execution threads at the shader-instruction level instead of the single-command level or even batch of commands, was introduced in WDDM/DXGI 1.2 which shipped with Windows 8.[86] This overcomes a potential scheduling problem when application would have very long execution of a single command/batch of commands and will have to be terminated by the OS watchdog timer.[162]

WDDM 2.0 and DirectX 12 have been reengineered to allow fully multithreaded draw calls. This was achieved by making all resources immutable (i.e. read-only), serializing the rendering states and using draw call bundles. This avoids complex resource management in the kernel-mode driver, making possible multiple reentrant calls to the user-mode driver via concurrent executions contexts supplied by separate rendering threads in the same application.

Direct3D Mobile edit

Direct3D Mobile is derived from Direct3D but has a smaller memory footprint. Windows CE provides Direct3D Mobile support.[163]

Alternative implementations edit

The following alternative implementations of Direct3D API exist. They are useful for non-Windows platforms and for hardware without some versions of DX support:

  • WineD3D – The Wine open source project has working implementations of the Direct3D APIs via translation to OpenGL.[164] Wine's implementation can also be run on Windows under certain conditions.[165]
  • vkd3d – vkd3d is an open source 3D graphics library built on top of Vulkan which allows to run Direct3D 12 applications on top of Vulkan.[166] It's primarily used by the Wine project,[167][168] and is now included with Valve's Proton project bundled with steam on linux.
  • DXVK – An open source Vulkan-based translation layer for Direct3D 9/10/11 which allows running 3D applications on Linux using Wine.[169][170] It is used by Proton/Steam[171] for Linux. DXVK is able to run a large number of modern Windows games under Linux.
    • D9VK – A fork of DXVK for adding Direct3D 9 support,[172] included with Steam/Proton on Linux.[173] On December 16, 2019 D9VK was merged into DXVK.[174]
  • Gallium Nine – Gallium Nine makes it possible to run Direct3D 9 applications on Linux natively, i.e. without any calls translation which allows for a near native speed. It depends on Wine and Mesa.[175][176]

Related tools edit

D3DX edit

Direct3D comes with D3DX, a library of tools designed to perform common mathematical calculations on vectors, matrices and colors, calculating look-at and projection matrices, spline interpolations, and several more complicated tasks, such as compiling or assembling shaders used for 3D graphic programming, compressed skeletal animation storage and matrix stacks. There are several functions that provide complex operations over 3D meshes like tangent-space computation, mesh simplification, precomputed radiance transfer, optimizing for vertex cache friendliness and stripification, and generators for 3D text meshes. 2D features include classes for drawing screen-space lines, text and sprite based particle systems. Spatial functions include various intersection routines, conversion from/to barycentric coordinates and bounding box/sphere generators. D3DX is provided as a dynamic link library (DLL). D3DX is deprecated from Windows 8 onward and can't be used in Windows Store apps.[177]

Some features present in previous versions of D3DX were removed in Direct3D 11 and now provided as separate sources:[178]

  • Windows SDK and Visual Studio[179]
  • A large part of the math library has been removed. Microsoft recommends use of the DirectX Math library instead.
  • Spherical harmonics math has been removed and is now distributed as source.[180]
  • The Effect framework has been removed and is now distributed as source via CodePlex.[181]
  • The Mesh interface and geometry functions have been removed and are now distributed as source via CodePlex under DirectXMesh geometry processing library.[182]
  • Texture functions have been removed and are now distributed as source via CodePlex under DirectXTex texture processing library.[183]
  • General helpers have been removed and are now distributed as source via CodePlex under DirectX Tool Kit (DirectXTK) project.[184]
  • The isochart texture atlas has been removed and is now distributed as source via CodePlex under UVAtlas project.[185]

DXUT edit

DXUT (also called the sample framework) is a layer built on top of the Direct3D API. The framework is designed to help the programmer spend less time with mundane tasks, such as creating a window, creating a device, processing Windows messages and handling device events. DXUT have been removed with the Windows SDK 8.0 and now distributed as source via CodePlex.[186]

See also edit

References edit

  1. ^ "Configuring Depth-Stencil Functionality". Microsoft.
  2. ^ "RenderStateManager.UseWBuffer". Microsoft.
  3. ^ "Texture Blending (Direct3D 9)". Microsoft.
  4. ^ "Geometry Blending (Direct3D 9)". Microsoft.
  5. ^ "HLSL". Microsoft.
  6. ^ "Effects (Direct3D 11)". Microsoft.
  7. ^ . Microsoft. Archived from the original on November 2, 2011.
  8. ^ "Windows Advanced Rasterization Platform (WARP) Guide – WARP Architecture and Performance". MSDN.
  9. ^ "DirectX 8: Raising the Ante for Realism in Graphics" (PDF). evga.com. Retrieved September 6, 2023.
  10. ^ "Home> GPUs ATI SMARTSHADER Technology - Powering the next generation Radeon". anandtech.com. Retrieved September 6, 2023.
  11. ^ "Vertex Shaders and Pixel Shaders". thg.ru/. Retrieved September 6, 2023.
  12. ^ . archive.org. Retrieved September 6, 2023.
  13. ^ . www.falconfly.de. Archived from the original on November 10, 2006. Retrieved January 11, 2022.
  14. ^ . www.microsoft.com. Archived from the original on July 29, 2015. Retrieved January 11, 2022.
  15. ^ . qubesoft.com. April 4, 2017. Archived from the original on April 6, 2017. Retrieved April 5, 2017.
  16. ^ a b Claro, Nicole (April 1995). "Further Rendering" (PDF). Game Developer Magazine. (PDF) from the original on January 26, 2021. Retrieved August 21, 2022.
  17. ^ Prosise, Jeff (May 16, 1995). "Joining the Multimedia Party". PC Magazine. Retrieved August 20, 2022.
  18. ^ Thompson, Nigel (August 1996). "Building a Scene Using Retained Mode Direct3D" (PDF). Game Developer Magazine. (PDF) from the original on January 26, 2021. Retrieved August 20, 2022.
  19. ^ Berkes, Otto (April 12, 2015). "DirectX". Otto Berkes’ weblog. Retrieved August 22, 2022.
  20. ^ Chen, Raymond (January 22, 2004). "What happened to DirectX 4?". The Old New Thing. Microsoft. Retrieved August 28, 2022.
  21. ^ "Press Release-Microsoft Meltdown (February 1997)". Microsoft Corporation. February 18, 1997.
  22. ^ "Press Release-Microsoft Meltdown (July 1997)". Microsoft Corporation. July 22, 1997.
  23. ^ Ron Fosner. "Get Fast and Simple 3D Rendering with DrawPrimitive and DirectX 5.0". Microsoft Systems Journal.
  24. ^ . gamedev.net. May 29, 2000. Archived from the original on August 5, 2011. Retrieved September 17, 2011.
  25. ^ "Microsoft Ships Final Release of DirectX 6.0". Microsoft. August 7, 1998.
  26. ^ "Microsoft Ships DirectX 6.1". Microsoft. February 3, 1999.
  27. ^ (PDF). Microsoft. May 5, 1997. Archived from the original (PDF) on December 8, 2015. Retrieved October 31, 2015.
  28. ^ "DDS (DirectDraw Surface format)". MSDN.
  29. ^ . GameSpot. UK. March 1999. Archived from the original on May 8, 1999. Retrieved July 20, 2019.
  30. ^ "Microsoft Announces Release of DirectX 8.0". Microsoft. November 9, 2000. Retrieved January 7, 2015.
  31. ^ . GameSpot. UK. Archived from the original on February 23, 2001. Retrieved July 20, 2019.
  32. ^ . gamedev.net. November 30, 2000. Archived from the original on June 4, 2007. Retrieved February 18, 2007.
  33. ^ "Direct3D 9 Graphics". MSDN. Retrieved September 30, 2014.
  34. ^ "Writing HLSL Shaders in Direct3D 9". MSDN. Retrieved September 30, 2014.
  35. ^ . Microsoft. Archived from the original on August 27, 2010.
  36. ^ "Multiple Render Targets (Direct3D 9)". MSDN. Retrieved September 30, 2014.
  37. ^ "Multiple-element Textures (Direct3D 9)". MSDN. Retrieved September 30, 2014.
  38. ^ "Stencil Buffer Techniques (Direct3D 9)". MSDN. Retrieved September 30, 2014.
  39. ^ "Direct3D 9Ex Improvements". MSDN. Retrieved September 30, 2014.
  40. ^ "Graphics APIs in Windows". MSDN. August 2009.
  41. ^ a b "The role of the Windows Display Driver Model in the DWM". April 2, 2006.
  42. ^ "API Features (Direct3D 10)". MSDN. Retrieved September 30, 2014.
  43. ^ Microsoft Support (March 17, 2009). . Archived from the original on June 1, 2013.{{cite web}}: CS1 maint: unfit URL (link)
  44. ^ "DirectX Software Development Kit, February 2007". Microsoft. Archived from the original on September 3, 2012.
  45. ^ "Resource Types (Direct3D 10)". MSDN. Retrieved September 30, 2014.
  46. ^ "API Layers (Direct3D 10)". MSDN. Retrieved September 30, 2014.
  47. ^ "CNet News". Retrieved September 30, 2014.
  48. ^ "Common-Shader Core". Microsoft.
  49. ^ "Geometry Shader Features". Microsoft.
  50. ^ "Shader Stages". Microsoft.
  51. ^ "What Direct3D 10 is all about – Additional Improvements". Tom's Hardware. November 8, 2006.
  52. ^ "Direct3D 10.1 Features". MSDN. Retrieved September 30, 2014.
  53. ^ "Microsoft Presents DirectX 10.1 Details at SIGGRAPH". ExtremeTech. August 7, 2007.
  54. ^ "Direct3D 10.1 Features". MSDN.
  55. ^ a b "ID3D11Device::CheckMultisampleQualityLevels method". MSDN. Retrieved September 30, 2014.
  56. ^ a b c Chuck Walbourn (June 20, 2012). "Direct3D Feature Levels". Games for Windows and the DirectX SDK Blog.
  57. ^ "D3D10_FEATURE_LEVEL1 enumeration". MSDN. Retrieved November 22, 2009.
  58. ^ "Direct3D feature levels". MSDN. Retrieved September 30, 2014.
  59. ^ "Direct3D 11 Features". MSDN. Retrieved September 30, 2014.
  60. ^ a b c . Microsoft. Archived from the original on November 13, 2013.
  61. ^ a b "Nvision 08 Tech Presentations". Nvidia. Retrieved September 16, 2011.
  62. ^ "DirectX Software Development Kit, November 2008". Microsoft. November 7, 2008.
  63. ^ "AMD shows off world's first DirectX 11 GPU". Engadget. June 3, 2009.
  64. ^ a b "GameFest 2008: Introduction to the Direct3D 11 Graphics Pipeline". Microsoft. Slide 56. Archived from the original on January 28, 2013.
  65. ^ a b c "Direct3D 11 on Downlevel Hardware". MSDN. Retrieved November 18, 2012.
  66. ^ a b "Windows Driver Kit – Supporting Direct3D 11". MSDN. Retrieved June 13, 2009.
  67. ^ a b "Direct3D feature levels". MSDN. Retrieved July 2, 2012.
  68. ^ "Using ATI hardware tessellation in DX9". July 14, 2008.
  69. ^ . Archived from the original on November 8, 2010.
  70. ^ (PDF). Archived from the original (PDF) on July 27, 2011.
  71. ^ . Archived from the original on April 9, 2010.
  72. ^ "New Resource Types". MSDN. Retrieved September 30, 2014.
  73. ^ "Depth Bias". MSDN. Retrieved September 30, 2014.
  74. ^ "D3D11_RASTERIZER_DESC1 structure". MSDN. Retrieved September 30, 2014.
  75. ^ "Shader Model 5". MSDN. Retrieved September 30, 2014.
  76. ^ "Tessellation Overview". Microsoft.
  77. ^ "Tessellation Overview". MSDN. Retrieved September 30, 2014.
  78. ^ "Description of the Platform Update for Windows Server 2008 and the Platform Update for Windows Vista". Support.microsoft.com. October 2, 2012. Retrieved June 15, 2013.
  79. ^ . Blogs.msdn.com. September 10, 2009. Archived from the original on April 8, 2014. Retrieved June 15, 2013.
  80. ^ "Direct3D 11.1 Features". MSDN. Retrieved September 30, 2014.
  81. ^ "D3D11_FEATURE_DATA_D3D11_OPTIONS structure". MSDN. Retrieved September 30, 2014.
  82. ^ "DirectX feature improvements in Windows 8". MSDN. Retrieved September 30, 2014.
  83. ^ "Direct3D 11.1 Features". MSDN. Retrieved September 13, 2009.
  84. ^ "DXGI 1.2 Improvements". MSDN. Retrieved September 30, 2014.
  85. ^ "WDDM 1.2 features". MSDN. Retrieved September 30, 2014.
  86. ^ a b c "Windows Display Driver Model Enhancements in Windows Developer Preview". MSDN. September 13, 2011.
  87. ^ "Scalar Types". Retrieved October 2, 2014.
  88. ^ "Intel's Haswell IGP to Feature DirectX 11.1, Increased Professional Application Support". AnandTech. August 5, 2011.
  89. ^ "DirectX Graphics – Platform Update for Windows 7". MSDN. November 14, 2012.
  90. ^ "DirectX 11.1 and Windows 7". Games for Windows and the DirectX SDK Blog. November 13, 2012.
  91. ^ . MSDN. Archived from the original on October 31, 2013. Retrieved September 30, 2014.
  92. ^ "Direct3D 11.2 Features". MSDN. Retrieved September 30, 2014.
  93. ^ "D3D11_FEATURE_DATA_D3D11_OPTIONS1 structure". MSDN. Retrieved September 30, 2014.
  94. ^ a b . MSDN Library. June 26, 2013. Archived from the original on August 27, 2015. Retrieved June 27, 2013.
  95. ^ a b Bennett Sorbo (June 26, 2013). "What's New in Direct3D 11.2". Channel9 – BUILD 2013.
  96. ^ "DXGI 1.3 Improvements". MSDN Library. June 26, 2013.
  97. ^ "What's new for Windows 8.1 Preview display drivers (WDDM 1.3)". MSDN. Retrieved September 30, 2014.
  98. ^ . Archived from the original on March 4, 2016. Retrieved March 6, 2015.
  99. ^ "D3D11_TILED_RESOURCES_TIER enumeration". MSDN. Retrieved September 30, 2014.
  100. ^ Charles Hollemeersch, Matt Sandy (June 26, 2013). "Massive Virtual Textures for Games: Direct3D Tiled Resources". Channel9 – BUILD 2013.
  101. ^ "Direct3D 11.2 Features". MSDN Library. June 26, 2013.
  102. ^ "MSDN Blogs". MSDN. Retrieved September 30, 2014.
  103. ^ "D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT structure". MSDN. Retrieved September 30, 2014.
  104. ^ "Raising the Bar with Direct3D". Building Apps for Windows. October 14, 2013. Retrieved September 30, 2014.
  105. ^ "Microsoft officially turns down Mantle". October 16, 2013. Retrieved September 30, 2014.
  106. ^ Chris Tector's segment of http://channel9.msdn.com/Blogs/DirectX-Developer-Blog/DirectX-Evolving-Microsoft-s-Graphics-Platform (starting approx. 18 minute in.)
  107. ^ "Rendering (Direct3D 12 Graphics) - Win32 apps".
  108. ^ Ryan Smith. "AnandTech – Microsoft Details Direct3D 11.3 & 12 New Rendering Features". Retrieved September 30, 2014.
  109. ^ Ryan Smith. "AnandTech – The NVIDIA GeForce GTX 980 Review: Maxwell Mark 2". Retrieved September 30, 2014. First and foremost among Maxwell 2's new features is the inclusion of full Direct3D 11.2/11.3 compatibility.
  110. ^ a b "DirectX 11.3 New Features Outline – Tiled Resources – Typed UAV Loads". September 19, 2014. Retrieved September 30, 2014.
  111. ^ "D3D11_CONSERVATIVE_RASTERIZATION_TIER enumeration". MSDN library. February 22, 2015. Retrieved February 22, 2015.
  112. ^ "Direct3D 11.3 Features". MSDN library. March 28, 2015. Retrieved March 28, 2015.
  113. ^ "Games for Windows and the DirectX SDK blog".
  114. ^ a b Ryan Smith. "AnandTech – Microsoft Announces DirectX 12: Low Level Graphics Programming Comes To DirectX". Retrieved September 30, 2014.
  115. ^ "Intel Developer Zone". Intel. Retrieved December 21, 2022.
  116. ^ "Direct3D 12 Overview Part 1: 'Closer To The Metal'". Retrieved October 2, 2014.
  117. ^ first two minutes of https://channel9.msdn.com/Events/Build/2014/3-564
  118. ^ "A closer look at DirectX 12 – The Tech Report – Page 3". March 31, 2014. Retrieved September 30, 2014.
  119. ^ Ryan Smith. "AnandTech – Microsoft Details Direct3D 11.3 & 12 New Rendering Features". Retrieved September 30, 2014.
  120. ^ . Archived from the original on April 30, 2018. Retrieved September 19, 2014.{{cite web}}: CS1 maint: archived copy as title (link)
  121. ^ a b "Shader Model 5.1 - Win32 apps".
  122. ^ "Meet the future of PC graphics: Microsoft reveals faster, console-like DirectX 12". PCWorld. March 20, 2014. Retrieved September 30, 2014.
  123. ^ "DirectX 12 will also add new features for next-gen GPUs". March 21, 2014. Retrieved September 30, 2014.
  124. ^ Kowaliski, Cyril (March 21, 2014). "DirectX 12 will also add new features for next-gen GPUs". The Tech Report. Retrieved April 1, 2014.
  125. ^ "Technical Library". Intel. Retrieved December 21, 2022.
  126. ^ "Direct3D 12 Overview Part 7: Dynamic Heaps". Retrieved October 2, 2014.
  127. ^ . Archived from the original on September 14, 2016. Retrieved August 3, 2016.
  128. ^ "Porting DirectX 12 games to Windows 7". August 21, 2019.
  129. ^ "DirectX-Specs".
  130. ^ "Microsoft.Direct3D.D3D12On7 1.1.0".
  131. ^ HLSL Shader Model 6.0
  132. ^ a b "Announcing new DirectX 12 features". DirectX Developer Blog. Retrieved February 24, 2018.
  133. ^ "Direct Machine Learning (DirectML)". Microsoft Docs. Retrieved June 28, 2020.
  134. ^ "DirectML". Microsoft Docs.
  135. ^ "Coming to DirectX 12— Mesh Shaders and Amplification Shaders: Reinventing the Geometry Pipeline". DirectX Developer Blog. Retrieved June 28, 2020.
  136. ^ "Coming to DirectX 12— Sampler Feedback: some useful once-hidden data, unlocked". DirectX Developer Blog. Retrieved November 4, 2019.
  137. ^ "DirectX Raytracing (DXR) Tier 1.1". DirectX Developer Blog. Retrieved November 6, 2019.
  138. ^ "Coming to DirectX 12: More control over memory allocation". DirectX Developer Blog. Retrieved November 11, 2019.
  139. ^ "Software Rasterizer for DirectX 9.0 SDK". Microsoft. August 1, 2005. Archived from the original on September 4, 2012.
  140. ^ . Archived from the original on May 9, 2008.
  141. ^ "Graphics Pipeline". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  142. ^ "Input-Assembler Stage". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  143. ^ "Vertex Shader Stage". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  144. ^ "Tessellation Stages". Direct3D 11 Graphics. Microsoft Docs. Hull-Shader Stage. Retrieved October 19, 2021.
  145. ^ "Tessellation Stages". Direct3D 11 Graphics. Microsoft Docs. Tessellator Stage. Retrieved October 19, 2021.
  146. ^ "Tessellation Stages". Direct3D 11 Graphics. Microsoft Docs. Domain-Shader Stage. Retrieved October 19, 2021.
  147. ^ "Geometry Shader Stage". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  148. ^ "Stream-Output Stage". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  149. ^ "RenderStates". DirectX 9.0 for Managed Code. Microsoft Docs. Retrieved October 19, 2021.
  150. ^ "Rasterizer Stage". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  151. ^ "Pixel Shader Stage". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  152. ^ "Output-Merger Stage". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  153. ^ a b "Direct3D 11.1 Features - Win32 apps".
  154. ^ "D3D11_FORMAT_SUPPORT enumeration". MSDN. Retrieved June 16, 2015.
  155. ^ "D3D11_FORMAT_SUPPORT2 enumeration". MSDN. Retrieved June 16, 2015.
  156. ^ "Hardware Tiers - Win32 apps". learn.microsoft.com. Retrieved December 21, 2022.
  157. ^ "D3D12_FEATURE - Win32 apps".
  158. ^ "Introduction to a Resource in Direct3D 11 - Win32 apps".
  159. ^ Wolfgang Engel. "Introduction to Resource Binding in Microsoft DirectX 12".
  160. ^ GVCS005 - Microsoft Direct3D 12: New API Details and Intel Optimizations April 4, 2015, at the Wayback Machine
  161. ^ "Shows". learn.microsoft.com. Retrieved December 21, 2022.
  162. ^ "Timeout detection and recovery (TDR) - Windows drivers". Microsoft.
  163. ^ Direct3D Mobile, Microsoft, 6 January 2010.
  164. ^ "The Wine team is proud to announce that the stable release Wine 4.0". WineHQ. Retrieved April 3, 2019.
  165. ^ . Wiki.winehq.org. June 2, 2013. Archived from the original on January 17, 2009. Retrieved June 15, 2013.
  166. ^ WineHQ - vkd3d, Direct3D 12, April 3, 2019, retrieved June 30, 2020
  167. ^ "Vkd3d 1.0 Released". WineHQ. Retrieved April 3, 2019.
  168. ^ Michael Larabel (August 23, 2019). "Valve's Proton Offers Branch With VKD3D For Direct3D 12 Over Vulkan". Phoronix. Retrieved October 7, 2019.
  169. ^ Jason Evangelho (March 1, 2019). "Windows 10 Versus Linux: 6 Steam Games Benchmarked On Intel's Hades Canyon NUC". Forbes. Retrieved October 7, 2019.
  170. ^ Rebohle, Philip (April 3, 2019), Vulkan-based D3D11 and D3D10 implementation for Linux / Wine: doitsujin/dxvk, retrieved April 3, 2019
  171. ^ Compatibility tool for Steam Play based on Wine and additional components: ValveSoftware/Proton, Valve, April 3, 2019, retrieved April 3, 2019
  172. ^ "D9VK GitHub repository". GitHub. Retrieved October 6, 2019.
  173. ^ Michael Larabel (July 30, 2019). "Proton Re-Based To Wine 4.11, Adds D9VK Direct3D 9, Better CPU Utilization & DXVK 1.3". Phoronix. Retrieved October 7, 2019.
  174. ^ "Implement Direct3D9 Frontend by Joshua-Ashton · Pull Request #1275 · doitsujin/dxvk". GitHub. Retrieved December 17, 2019.
  175. ^ Build Gallium Nine support on top of an existing WINE installation: iXit/wine-nine-standalone, iXit Group, April 3, 2019, retrieved April 3, 2019
  176. ^ Joey Sneddon (October 10, 2018). "Ubuntu 18.10 Adds Gallium Nine Support, Latest Mesa 18.2.2". OMG! Ubuntu!. Retrieved October 7, 2019.
  177. ^ "D3DX 11 Reference". MSDN. Retrieved September 30, 2014.
  178. ^ "Living without D3DX". MSDN.
  179. ^ "Effect-Compiler Tool". Microsoft.
  180. ^ "Spherical Harmonics Math". msdn.com. Retrieved November 23, 2014.
  181. ^ "Effects 11". CodePlex. Retrieved September 30, 2014.
  182. ^ "DirectXMesh geometry processing library". CodePlex. Retrieved September 30, 2014.
  183. ^ "DirectXTex texture processing library". CodePlex. Retrieved September 30, 2014.
  184. ^ "DirectX Tool Kit". CodePlex. Retrieved September 30, 2014.
  185. ^ "UVAtrlas". CodePlex. Retrieved November 23, 2014.
  186. ^ "DXUT for Win32 Desktop Update". MSDN.

External links edit

  • DirectX website
  • MSDN: DirectX Graphics and Gaming
  • , technical article discussing the new features of DirectX 10 and their impact on computer games

direct3d, this, article, needs, additional, citations, verification, please, help, improve, this, article, adding, citations, reliable, sources, unsourced, material, challenged, removed, find, sources, news, newspapers, books, scholar, jstor, january, 2014, le. This article needs additional citations for verification Please help improve this article by adding citations to reliable sources Unsourced material may be challenged and removed Find sources Direct3D news newspapers books scholar JSTOR January 2014 Learn how and when to remove this template message Direct3D is a graphics application programming interface API for Microsoft Windows Part of DirectX Direct3D is used to render three dimensional graphics in applications where performance is important such as games Direct3D uses hardware acceleration if it is available on the graphics card allowing for hardware acceleration of the entire 3D rendering pipeline or even only partial acceleration Direct3D exposes the advanced graphics capabilities of 3D graphics hardware including Z buffering 1 W buffering 2 stencil buffering spatial anti aliasing alpha blending color blending mipmapping texture blending 3 4 clipping culling atmospheric effects perspective correct texture mapping programmable HLSL shaders 5 and effects 6 Integration with other DirectX technologies enables Direct3D to deliver such features as video mapping hardware 3D rendering in 2D overlay planes and even sprites providing the use of 2D and 3D graphics in interactive media ties Direct3DDeveloper s MicrosoftInitial releaseJune 2 1996 27 years ago 1996 06 02 Stable release12 July 29 2015 8 years ago 2015 07 29 Operating systemMicrosoft Windows Windows CE Windows Embedded Xbox system softwarePlatformx86 ARMType3D computer graphics APILicenseProprietaryWebsitelearn wbr microsoft wbr com wbr en us wbr windows wbr win32 wbr direct3dDirect3D contains many commands for 3D computer graphics rendering however since version 8 Direct3D has superseded the DirectDraw framework and also taken responsibility for the rendering of 2D graphics 7 Microsoft strives to continually update Direct3D to support the latest technology available on 3D graphics cards Direct3D offers full vertex software emulation but no pixel software emulation for features not available in hardware For example if software programmed using Direct3D requires pixel shaders and the video card on the user s computer does not support that feature Direct3D will not emulate it although it will compute and render the polygons and textures of the 3D models albeit at a usually degraded quality and performance compared to the hardware equivalent The API does include a Reference Rasterizer or REF device which emulates a generic graphics card in software although it is too slow for most real time 3D applications and is typically only used for debugging A new real time software rasterizer WARP designed to emulate the complete feature set of Direct3D 10 1 is included with Windows 7 and Windows Vista Service Pack 2 with the Platform Update its performance is said to be on par with lower end 3D cards on multi core CPUs 8 As part of DirectX Direct3D is available for Windows 95 and above and is the base for the vector graphics API on the different versions of Xbox console systems The Wine compatibility layer a free software reimplementation of several Windows APIs includes an implementation of Direct3D Direct3D s main competitor is Khronos OpenGL and its follow on Vulkan Fahrenheit was an attempt by Microsoft and SGI to unify OpenGL and Direct3D in the 1990s but was eventually canceled Contents 1 Overview 2 Direct3D 2 0 and 3 0 3 Direct3D 4 0 4 Direct3D 5 0 5 Direct3D 6 0 6 Direct3D 7 0 7 Direct3D 8 0 8 Direct3D 9 9 Direct3D 10 9 1 Direct3D 10 0 9 2 Direct3D 10 1 10 Direct3D 11 10 1 Direct3D 11 0 10 2 Direct3D 11 1 10 3 Direct3D 11 2 10 4 Direct3D 11 3 10 5 Direct3D 11 4 11 Direct3D 12 12 Architecture 13 Pipeline 14 Feature levels 14 1 Direct3D 11 levels 14 2 Direct3D 12 levels 15 Multithreading 16 Direct3D Mobile 17 Alternative implementations 18 Related tools 18 1 D3DX 18 2 DXUT 19 See also 20 References 21 External linksOverview editSee also DirectX Version history Direct3D 6 0 Multitexturing Direct3D 7 0 Hardware Transformation Clipping and Lighting TCL T amp L Direct3D 8 0 Pixel Shader 1 0 1 1 amp Vertex Shader 1 0 1 1 9 Direct3D 8 1 Pixel Shader 1 2 1 3 1 4 10 11 12 Direct3D 9 0 Shader Model 2 0 Pixel Shader 2 0 amp Vertex Shader 2 0 Direct3D 9 0a Shader Model 2 0a Pixel Shader 2 0a amp Vertex Shader 2 0a Direct3D 9 0b Pixel Shader 2 0b Direct3D 9 0c last version supported for Windows 98 early releases 13 and for Windows 2000 XP all releases 14 Shader Model 3 0 Pixel Shader 3 0 amp Vertex Shader 3 0 Direct3D 9 0L Windows Vista only Direct3D 9 0c Shader Model 3 0 Windows Graphics Foundation 1 0 DXVA 1 0 GPGPU Direct3D 10 0 Windows Vista Windows 7 Shader Model 4 0 Windows Graphics Foundation 2 0 DXVA 2 0 Direct3D 10 1 Windows Vista SP1 Windows 7 Shader Model 4 1 Windows Graphics Foundation 2 1 DXVA 2 1 Direct3D 11 0 Windows Vista SP2 Windows 7 Shader Model 5 0 Tessellation Multithreaded rendering Compute shaders implemented by hardware and software running Direct3D 9 10 10 1 Direct3D 11 1 Windows 8 partially supported on Windows 7 SP1 also Stereoscopic 3D Rendering Direct3D 11 2 Windows 8 1 Tiled resources Direct3D 11 3 Windows 10 Direct3D 12 0 Windows 10 low level rendering API Shader Model 5 1 and 6 0Direct3D 2 0 and 3 0 editIn 1992 Servan Keondjian and Doug Rabson started a company named RenderMorphics which developed a 3D graphics API named Reality Lab which was used in medical imaging and CAD software 15 Two versions of this API were released 16 Microsoft bought RenderMorphics in February 1995 bringing Keondjian on board to implement a 3D graphics engine for Windows 95 17 The first version of Direct3D shipped in DirectX 2 0 June 2 1996 and DirectX 3 0 September 26 1996 Direct3D initially implemented an immediate mode 3D API and layered upon it a retained mode 3D API 18 Both types of API were already offered with the second release of Reality Lab before Direct3D was released 16 Like other DirectX APIs such as DirectDraw both were based on COM The retained mode API was a scene graph API that attained little adoption Game developers clamored for more direct control of the hardware s activities than the Direct3D retained mode could provide Only two games that sold a significant volume Lego Island and Lego Rock Raiders were based on the Direct3D retained mode so Microsoft did not update the retained mode API after DirectX 3 0 For DirectX 2 0 and 3 0 the Direct3D immediate mode used an execute buffer programming model that Microsoft hoped hardware vendors would support directly Execute buffers were intended to be allocated in hardware memory and parsed by the hardware to perform the 3D rendering They were considered extremely awkward to program at the time however hindering adoption of the new API and prompting calls for Microsoft to adopt OpenGL as the official 3D rendering API for games as well as workstation applications 19 see OpenGL vs Direct3D Rather than adopt OpenGL as a gaming API Microsoft chose to continue improving Direct3D not only to be competitive with OpenGL but to compete more effectively with other proprietary APIs such as 3dfx s Glide From the beginning the immediate mode also supported Talisman s tiled rendering with the BeginScene EndScene methods of the IDirect3DDevice interface Direct3D 4 0 editNo substantive changes were planned to Direct3D for DirectX 4 0 which was scheduled to ship in late 1996 and then canceled 20 Direct3D 5 0 editIn December 1996 a team in Redmond took over development of the Direct3D Immediate Mode while the London based RenderMorphics team continued work on the Retained Mode The Redmond team added the DrawPrimitive API that eliminated the need for applications to construct execute buffers making Direct3D more closely resemble other immediate mode rendering APIs such as Glide and OpenGL The first beta of DrawPrimitive shipped in February 1997 21 and the final version shipped with DirectX 5 0 in August 1997 22 Besides introducing an easier to use immediate mode API DirectX 5 0 added the SetRenderTarget method that enabled Direct3D devices to write their graphical output to a variety of DirectDraw surfaces 23 Direct3D 6 0 editDirectX 6 0 released in August 1998 introduced numerous features to cover contemporary hardware such as multitexture 24 and stencil buffers as well as optimized geometry pipelines for x87 SSE and 3DNow and optional texture management to simplify programming 25 Direct3D 6 0 also included support for features that had been licensed by Microsoft from specific hardware vendors for inclusion in the API in exchange for the time to market advantage to the licensing vendor S3 texture compression support was one such feature renamed as DXTC for purposes of inclusion in the API Another was TriTech s proprietary bump mapping technique Microsoft included these features in DirectX then added them to the requirements needed for drivers to get a Windows logo to encourage broad adoption of the features in other vendors hardware A minor update to DirectX 6 0 came in the February 1999 DirectX 6 1 update Besides adding DirectMusic support for the first time this release improved support for Intel Pentium III 3D extensions 26 A confidential memo sent in 1997 27 shows Microsoft planning to announce full support for Talisman in DirectX 6 0 but the API ended up being canceled See the Microsoft Talisman page for details Direct3D 7 0 editDirectX 7 0 released in September 1999 introduced the dds texture format 28 and support for transform and lighting hardware acceleration 29 first available on PC hardware with Nvidia s GeForce 256 as well as the ability to allocate vertex buffers in hardware memory Hardware vertex buffers represent the first substantive improvement over OpenGL in DirectX history Direct3D 7 0 also augmented DirectX support for multitexturing hardware and represents the pinnacle of fixed function multitexture pipeline features although powerful it was so complicated to program that a new programming model was needed to expose the shading capabilities of graphics hardware Direct3D 8 0 editDirectX 8 0 released in November 2000 introduced programmability in the form of vertex and pixel shaders enabling developers to write code without worrying about superfluous hardware state 30 The complexity of the shader programs depended on the complexity of the task and the display driver compiled those shaders to instructions that could be understood by the hardware Direct3D 8 0 and its programmable shading capabilities were the first major departure from an OpenGL style fixed function architecture where drawing is controlled by a complicated state machine Direct3D 8 0 also eliminated DirectDraw as a separate API 31 32 Direct3D subsumed all remaining DirectDraw API calls still needed for application development such as Present the function used to display rendering results Direct3D was not considered to be user friendly but as of DirectX version 8 1 many usability problems were resolved Direct3D 8 contained many powerful 3D graphics features such as vertex shaders pixel shaders fog bump mapping and texture mapping Direct3D 9 editDirect3D 9 0 33 released in December 2002 added a new version of the High Level Shader Language 34 35 support for floating point texture formats Multiple Render Targets MRT 36 Multiple Element Textures 37 texture lookups in the vertex shader and stencil buffer techniques 38 Direct3D 9Ex Direct3D 9Ex improvements Win32 appsAn extension only available in Windows Vista and newer 7 8 8 1 10 and 11 called Direct3D 9Ex 39 previously versioned 9 0L L codename Windows Longhorn allows the use of the advantages offered by Windows Vista s Windows Display Driver Model WDDM and is used for Windows Aero 40 Direct3D 9Ex in conjunction with DirectX 9 class WDDM drivers allows graphics memory to be virtualized and paged out to system memory allows graphics operations to be interrupted and scheduled and allow DirectX surfaces to be shared across processes 41 Direct3D 9Ex was previously known as version 1 0 of Windows Graphics Foundation WGF Direct3D 10 editSee also Windows Display Driver Model Windows Vista includes a major update to the Direct3D API Originally called WGF 2 0 Windows Graphics Foundation 2 0 then DirectX 10 and DirectX Next Direct3D 10 42 features an updated shader model 4 0 and optional interruptibility for shader programs 41 In this model shaders still consist of fixed stages as in previous versions but all stages support a nearly unified interface as well as a unified access paradigm for resources such as textures and shader constants The language itself has been extended to be more expressive including integer operations a greatly increased instruction count and more C like language constructs In addition to the previously available vertex and pixel shader stages the API includes a geometry shader stage that breaks the old model of one vertex in one vertex out to allow geometry to be generated from within a shader thus allowing for complex geometry to be generated entirely by the graphics hardware Windows XP is not supported by DirectX 10 0 and above Furthermore Direct3D 10 dropped support for the retained mode API which had been a part of Direct3D since the beginning making Windows Vista incompatible with 3D games that had used the retained mode API as their rendering engine 43 Unlike prior versions of the API Direct3D 10 no longer uses capability bits or caps to indicate which features are supported on a given graphics device Instead it defines a minimum standard of hardware capabilities which must be supported for a display system to be Direct3D 10 compatible This is a significant departure with the goal of streamlining application code by removing capability checking code and special cases based on the presence or absence of specific capabilities Because Direct3D 10 hardware was comparatively rare after the initial release of Windows Vista and because of the massive installed base of non Direct3D 10 compatible graphics cards the first Direct3D 10 compatible games still provide Direct3D 9 render paths Examples of such titles are games originally written for Direct3D 9 and ported to Direct3D 10 after their release such as Company of Heroes or games originally developed for Direct3D 9 with a Direct3D 10 path retrofitted later during their development such as Hellgate London or Crysis The DirectX 10 SDK became available in February 2007 44 Direct3D 10 0 edit Direct3D 10 0 level hardware must support the following features the ability to process entire primitives in the new geometry shader stage the ability to output pipeline generated vertex data to memory using the stream output stage multisampled alpha to coverage support readback of a depth stencil surface or a multisampled resource once it is no longer bound as a render target full HLSL integration all Direct3D 10 shaders are written in HLSL and implemented with the common shader core integer and bitwise shader operations organization of pipeline state into 5 immutable state objects organization of shader constants into constant buffers increased number of render targets textures and samplers no shader length limit new resource types and resource formats 45 layered runtime API layers 46 option to perform per primitive material swapping and setup using a geometry shader increased generalization of resource access using a view removed legacy hardware capability bits caps Fixed pipelines 47 are being done away with in favor of fully programmable pipelines often referred to as unified pipeline architecture which can be programmed to emulate the same New state object to enable mostly the CPU to change states efficiently Shader model 4 0 enhances the programmability of the graphics pipeline It adds instructions for integer and bitwise calculations The common shader core 48 provides a full set of IEEE compliant 32 bit integer and bitwise operations These operations enable a new class of algorithms in graphics hardware examples include compression and packing techniques FFTs and bitfield program flow control Geometry shaders 49 50 which work on adjacent triangles which form a mesh Texture arrays enable swapping of textures in GPU without CPU intervention Predicated rendering allows drawing calls to be ignored based on some other conditions This enables rapid occlusion culling which prevents objects from being rendered if it is not visible or too far to be visible Instancing 2 0 support allowing multiple instances of similar meshes such as armies or grass or trees to be rendered in a single draw call reducing the processing time needed for multiple similar objects to that of a single one 51 Direct3D 10 1 edit Direct3D 10 1 52 was announced by Microsoft shortly after the release of Direct3D 10 as a minor update The specification was finalized with the release of November 2007 DirectX SDK and the runtime was shipped with the Windows Vista SP1 which is available since mid March 2008 Direct3D 10 1 sets a few more image quality standards for graphics vendors and gives developers more control over image quality 53 54 Features include finer control over anti aliasing both multisampling and supersampling with per sample shading and application control over sample position and more flexibilities to some of the existing features cubemap arrays and independent blending modes Direct3D 10 1 level hardware must support the following features Multisampling has been enhanced to generalize coverage based transparency and make multisampling work more effectively with multi pass rendering better culling behavior Zero area faces are automatically culled this affects wireframe rendering only independent blend modes per render target new sample frequency pixel shader execution with primitive rasterization increased pipeline stage bandwidth both color and depth stencil MSAA surfaces can now be used with CopyResource as either a source or destination MultisampleEnable only affects line rasterization points and triangles are unaffected and is used to choose a line drawing algorithm This means that some multisample rasterization from Direct3D 10 are no longer supported Texture Sampling sample c and sample c lz instructions are defined to work with both Texture2DArrays and TextureCubeArrays use the Location member the alpha component to specify an array index support for TextureCubeArrays Mandatory 32 bit floating point filtering Floating Point Rules Uses the same IEEE 754 rules for floating point EXCEPT 32 bit floating point operations have been tightened to produce a result within 0 5 unit last place 0 5 ULP of the infinitely precise result This applies to addition subtraction and multiplication accuracy to 0 5 ULP for multiply 1 0 ULP for reciprocal Formats The precision of float16 blending has increased to 0 5 ULP Blending is also required for UNORM16 SNORM16 SNORM8 formats Format Conversion while copying between certain 32 64 128 bit prestructured typed resources and compressed representations of the same bit widths Mandatory support for 4x MSAA for all render targets except R32G32B32A32 and R32G32B32 55 Shader model 4 1Unlike Direct3D 10 which strictly required Direct3D 10 class hardware and driver interfaces Direct3D 10 1 runtime can run on Direct3D 10 0 hardware using a concept of feature levels 56 57 58 but new features are supported exclusively by new hardware which expose feature level 10 1 The only available Direct3D 10 1 hardware as of June 2008 were the Radeon HD 3000 series and Radeon HD 4000 series from ATI in 2009 they were joined by Chrome 430 440GT GPUs from S3 Graphics and select lower end models in GeForce 200 series from Nvidia In 2011 Intel chipsets started supporting Direct3D 10 1 with the introduction of Intel HD Graphics 2000 GMA HD Direct3D 11 editSee also Windows Advanced Rasterization Platform Direct3D 11 59 was released as part of Windows 7 It was presented at Gamefest 2008 on July 22 2008 and demonstrated at the Nvision 08 technical conference on August 26 2008 60 61 The Direct3D 11 Technical Preview has been included in November 2008 release of DirectX SDK 62 AMD previewed working DirectX11 hardware at Computex on June 3 2009 running some DirectX 11 SDK samples 63 The Direct3D 11 runtime is able to run on Direct3D 9 and 10 x class hardware and drivers using the concept of feature levels expanding on the functionality first introduced in Direct3D 10 1 runtime 56 64 65 Feature levels allow developers to unify the rendering pipeline under Direct3D 11 API and make use of API improvements such as better resource management and multithreading even on entry level cards though advanced features such as new shader models and rendering stages will only be exposed on up level hardware 64 66 There are three 10 Level 9 profiles which encapsulate various capabilities of popular DirectX 9 0a cards and Direct3D 10 10 1 and 11 each have a separate feature level each upper level is a strict superset of a lower level 67 Tessellation was earlier considered for Direct3D 10 but was later abandoned GPUs such as Radeon R600 feature a tessellation engine that can be used with Direct3D 9 10 10 1 68 69 70 and OpenGL 71 but it s not compatible with Direct3D 11 according to Microsoft Older graphics hardware such as Radeon 8xxx GeForce 3 4 had support for another form of tesselation RT patches N patches but those technologies never saw substantial use As such their support was dropped from newer hardware Microsoft has also hinted at other features such as order independent transparency which was never exposed by the Direct3D API but supported almost transparently by early Direct3D hardware such as Videologic s PowerVR line of chips Direct3D 11 0 edit DX11 redirects here For the digital synthesizer see Yamaha DX11 Direct3D 11 0 features include Support for Shader Model 5 0 Dynamic shader linking addressable resources additional resource types 72 subroutines geometry instancing coverage as pixel shader input programmable interpolation of inputs new texture compression formats 1 new LDR format and 1 new HDR format texture clamps to limit WDDM preload require 8 bits of subtexel and sub mip precision on texture filtering 16K texture limits Gather4 support for multi component textures support for programmable offsets DrawIndirect conservative oDepth Depth Bias 73 74 addressable stream output per resource mipmap clamping floating point viewports shader conversion instructions improved multithreading Shader Model 5 75 Support for Tessellation 76 and Tessellation Shaders 77 to increase at runtime the number of visible polygons from a low detail polygonal model Multithreaded rendering to render to the same Direct3D device object from different threads for multi core CPUs Compute shaders which exposes the shader pipeline for non graphical tasks such as stream processing and physics acceleration similar in spirit to what OpenCL Nvidia CUDA ATI Stream and HLSL Shader Model 5 achieve among others 60 61 Mandatory support for 4x MSAA for all render targets and 8x MSAA for all render target formats except R32G32B32A32 formats 55 Other notable features are the addition of two new texture compression algorithms for more efficient packing of high quality and HDR alpha textures and an increased texture cache First seen in the Release Candidate version Windows 7 integrates the first released Direct3D 11 support The Platform Update for Windows Vista includes full featured Direct3D 11 runtime and DXGI 1 1 update as well as other related components from Windows 7 like WARP Direct2D DirectWrite and WIC 78 79 Direct3D 11 1 edit Direct3D 11 1 80 81 is an update to the API that ships with Windows 8 82 83 The Direct3D runtime in Windows 8 features DXGI 1 2 84 and requires new WDDM 1 2 85 device drivers 86 Preliminary version of the Windows SDK for Windows 8 Developer Preview was released on September 13 2011 The new API features shader tracing and HLSL compiler enhancements support for minimum precision HLSL scalar data types 87 UAVs Unordered Access Views at every pipeline stage target independent rasterization TIR option to map SRVs of dynamic buffers with NO OVERWRITE shader processing of video resources option to use logical operations in a render target option to bind a subrange of a constant buffer to a shader and retrieve it option to create larger constant buffers than a shader can access option to discard resources and resource views option to change subresources with new copy options option to force the sample count to create a rasterizer state option to clear all or part of a resource view option to use Direct3D in Session 0 processes option to specify user clip planes in HLSL on feature level 9 and higher support for shadow buffer on feature level 9 support for video playback extended support for shared Texture2D resources and on the fly swapping between Direct3D 10 and 11 contexts and feature levels Direct3D 11 1 includes new feature level 11 1 which brings minor updates to the shader language such as larger constant buffers and optional double precision instructions as well as improved blending modes and mandatory support for 16 bit color formats to improve the performance of entry level GPUs such as Intel HD Graphics 86 88 WARP has been updated to support feature level 11 1 The Platform Update for Windows 7 includes a limited set of features from Direct3D 11 1 though components that depend on WDDM 1 2 such as feature level 11 1 and its related APIs or quad buffering for stereoscopic rendering are not present 89 90 Direct3D 11 2 edit Direct3D 11 2 91 92 93 was shipped with Windows 8 1 94 95 New hardware features require DXGI 1 3 96 with WDDM 1 3 97 drivers and include runtime shader modification and linking Function linking graph FLG inbox HLSL compiler option to annotate graphics commands 98 Feature levels 11 0 and 11 1 introduce optional support for tiled resources with shader level of detail clamp Tier2 99 The latter feature effectively provides control over the hardware page tables present in many current GPUs 100 WARP was updated to fully support the new features 94 101 There is no feature level 11 2 however the new features are dispersed across existing feature levels Those that are hardware dependent can be checked individually via CheckFeatureSupport 95 102 Some of the new features in Direct3D 11 2 actually expose some old hardware features in a more granular way for example D3D11 FEATURE D3D9 SIMPLE INSTANCING SUPPORT exposes partial support for instancing on feature level 9 1 and 9 2 hardware otherwise fully supported from feature level 9 3 onward 103 Direct3D 11 XDirect3D 11 X is a superset of DirectX 11 2 running on the Xbox One 104 105 It includes some features such as draw bundles that were later announced as part of DirectX 12 106 Direct3D 11 3 edit Direct3D 11 3 107 shipped in July 2015 with Windows 10 it includes minor rendering features from Direct3D 12 while keeping the overall structure of the Direct3D 11 x API 108 109 110 Direct3D 11 3 introduces optional Shader Specified Stencil Reference Value Typed Unordered Access View Loads Rasterizer Ordered Views ROVs optional Standard Swizzle optional Default Texture Mapping Conservative Rasterization out of three tiers 111 optional Unified Memory Access UMA support and additional Tiled Resources tier 2 Volume tiled resources 112 Direct3D 11 4 edit Direct3D 11 4 version 1511 Initial Direct3D 11 4 was introduced with Windows 10 Threshold 2 update version 1511 improving external graphics adapters support and DXGI 1 5 113 Direct3D 11 4 version 1607 Updated Direct3D 11 4 with Windows 10 Anniversary Update version 1607 includes support WDDM 2 1 and for UHDTV HDR10 format ST 2084 and variable refresh rates support for UWP applications Direct3D 12 editSee also DirectX Raytracing Direct3D 12 114 allows a lower level of hardware abstraction than earlier versions enabling future games to significantly improve multithreaded scaling and decrease CPU utilization This is achieved by better matching the Direct3D abstraction layer with the underlying hardware by means of new features such as Indirect Drawing descriptor tables concise pipeline state objects and draw call bundles Reducing driver overhead is in fact the main attraction of Direct3D 12 similarly to AMD s Mantle 114 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 115 116 117 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 118 Some new hardware features are also in Direct3D 12 110 119 120 including Shader Model 5 1 121 Volume Tiled Resources Tier 2 121 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 resources and compressed resources 122 additional blend modes 123 programmable blend and efficient order independent transparency OIT with pixel ordered UAV 124 Pipeline state objects 125 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 Direct3D 12 also learned from AMD Mantle citation needed in command lists and bundles aiming to ensure the CPU and GPU working together in a more balanced manner 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 126 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 127 An experimental support of D3D 12 for Windows 7 SP1 has been released by Microsoft in 2019 via a dedicated NuGet package 128 129 130 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 131 Other features include updated root signatures version 1 1 as well as support for HDR10 format and variable refresh rates 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 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 132 Direct3D 12 version 1709 Direct3D in Windows 10 Fall Creators Update version 1709 released on October 17 2017 includes improved debugging 132 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 NPU 133 134 Direct3D 12 version 2004 Windows 10 May 2020 Update version 2004 brings support for Mesh amp Amplification Shaders 135 Sampler Feedback 136 as well DirectX Raytracing Tier 1 1 137 and memory allocation improvements 138 Architecture editThis section needs to be updated Please help update this article to reflect recent events or newly available information August 2014 nbsp Abstract LayerDirect3D is a Microsoft DirectX API subsystem component The aim of Direct3D is to abstract the communication between a graphics application and the graphics hardware drivers It is presented like a thin abstract layer at a level comparable to GDI see attached diagram Direct3D contains numerous features that GDI lacks Direct3D is an Immediate mode graphics API It provides a low level interface to every video card 3D function transformations clipping lighting materials textures depth buffering and so on It once had a higher level Retained mode component now officially discontinued Direct3D immediate mode presents three main abstractions devices resources and Swap Chains see attached diagram Devices are responsible for rendering the 3D scene They provide an interface with different rendering capabilities For example the mono device provides white and black rendering while the RGB device renders in color There are four types of devices HAL hardware abstraction layer device For devices supporting hardware acceleration nbsp DeviceReference device Simulates new functions not yet available in hardware It is necessary to install the Direct3D SDK to use this device type Null reference device Does nothing This device is used when the SDK is not installed and a reference device is requested Pluggable software device Performs software rendering This device was introduced with DirectX 9 0 139 Every device contains at least one swap chain A swap chain is made up of one or more back buffer surfaces Rendering occurs in the back buffer Moreover devices contain a collection of resources specific data used during rendering Each resource has four attributes Type Determines the type of resource surface volume texture cube texture volume texture surface texture index buffer or vertex buffer Pool 140 Describes how the resource is managed by the runtime and where it is stored In the Default pool the resource will exist only in device memory Resources in the managed pool will be stored in system memory and will be sent to the device when required Resources in system memory pool will only exist in system memory Finally the scratch pool is basically the same as the system memory pool but resources are not bound by hardware restrictions Format Describes the layout of the resource data in memory For example D3DFMT R8G8B8 format value means a 24 bits color depth 8 bits for red 8 bits for green and 8 bits for blue Usage Describes with a collection of flag bits how the resource will be used by the application These flags dictate which resources are used in dynamic or static access patterns Static resource values don t change after being loaded whereas dynamic resource values may be modified Direct3D implements two display modes Fullscreen mode The Direct3D application generates all of the graphical output for a display device In this mode Direct3D automatically captures Alt Tab and sets restores screen resolution and pixel format without the programmer intervention This also provides plenty of problems for debugging due to the Exclusive Cooperative Mode citation needed Windowed mode The result is shown inside the area of a window Direct3D communicates with GDI to generate the graphical output in the display Windowed mode can have the same level of performance as full screen depending on driver support Pipeline edit nbsp Direct3D 11 graphics pipeline processThe Microsoft Direct3D 11 API defines a process to convert a group of vertices textures buffers and state into an image on the screen This process is described as a rendering pipeline with several distinct stages The different stages of the Direct3D 11 pipeline are 141 Input Assembler 142 Reads in vertex data from an application supplied vertex buffer and feeds them down the pipeline Vertex Shader 143 Performs operations on a single vertex at a time such as transformations skinning or lighting Hull Shader 144 Performs operations on sets of patch control points and generates additional data known as patch constants Tessellator 145 Subdivides geometry to create higher order representations of the hull Domain Shader 146 Performs operations on vertices output by the tessellation stage in much the same way as a vertex shader Geometry Shader 147 Processes entire primitives such as triangles points or lines Given a primitive this stage discards it or generates one or more new primitives Stream Output 148 Can write out the previous stage s results to memory This is useful to recirculate data back into the pipeline Rasterizer 149 150 Converts primitives into pixels feeding these pixels into the pixel shader The Rasterizer may also perform other tasks such as clipping what is not visible or interpolating vertex data into per pixel data Pixel Shader 151 Determines the final pixel color to be written to the render target and can also calculate a depth value to be written to the depth buffer Output Merger 152 Merges various types of output data pixel shader values alpha blending depth stencil to build the final result The pipeline stages illustrated with a round box are fully programmable The application provides a shader program that describes the exact operations to be completed for that stage Many stages are optional and can be disabled altogether Feature levels editMain article Feature levels in Direct3D In Direct3D 5 to 9 when new versions of the API introduced support for new hardware capabilities most of them were optional each graphics vendor maintained their own set of supported features in addition to the basic required functionality Support for individual features had to be determined using capability bits or caps making cross vendor graphics programming a complex task Direct3D 10 introduced a much simplified set of mandatory hardware requirements based on most popular Direct3D 9 capabilities which all supporting graphics cards had to adhere to with only a few optional capabilities for supported texture formats and operations Direct3D 10 1 added a few new mandatory hardware requirements and to remain compatible with 10 0 hardware and drivers these features were encapsulated in two sets called feature levels with 10 1 level forming a superset of 10 0 level As Direct3D 11 0 11 1 and 12 added support for new hardware new mandatory capabilities were further grouped in upper feature levels 56 Direct3D 11 also introduced 10level9 a subset of the Direct3D 10 API with three feature levels encapsulating various Direct3D 9 cards with WDDM drivers and Direct3D 11 1 re introduced a few optional features for all levels 153 which were expanded in Direct3D 11 2 and later versions This approach allows developers to unify the rendering pipeline and use a single version of the API on both newer and older hardware taking advantage of performance and usability improvements in the newer runtime 60 New feature levels are introduced with updated versions of the API and typically encapsulate major mandatory features Direct3D 11 0 12 a few minor features Direct3D 10 1 11 1 or a common set of previously optional features Direct3D 11 0 10 level 9 Each upper level is a strict superset of a lower level with only a few new or previously optional features that move to the core functionality on an upper level 67 More advanced features in a major revision of the Direct3D API such as new shader models and rendering stages are only exposed on up level hardware 65 66 Separate capabilities exist to indicate support for specific texture operations and resource formats these are specified per each texture format using a combination of capability flags 154 155 Feature levels use underscore as a delimiter i e 12 1 while API runtime versions use dot i e Direct3D 11 4 Direct3D 11 levels edit In Direct3D 11 4 for Windows 10 there are nine feature levels provided by D3D FEATURE LEVEL structure levels 9 1 9 2 and 9 3 collectively known as Direct3D 10 Level 9 re encapsulate various features of popular Direct3D 9 cards levels 10 0 10 1 refer to respective legacy versions of Direct3D 10 65 11 0 and 11 1 reflects the feature introduced with Direct3D 11 and Direct3D 11 1 APIs and runtimes while levels 12 0 and 12 1 correspond the new feature levels introduced with the Direct3D 12 API Feature levels in Direct3D 11 4 Feature level Mandatory hardware features Optional features9 1 Shader Model 2 0 vs 2 0 ps 2 0 2K textures volume textures event queries BC1 3 a k a DXTn a few other specific capabilities 9 2 Occlusion queries floating point formats no blending extended caps all 9 1 features 9 3 vs 2 a ps 2 x with instancing and additional shader caps 4K textures multiple render targets 4 MRTs floating point blending limited all 9 2 features 10 0 Shader Model 4 0 geometry shader stream out alpha to coverage 8K textures MSAA textures 2 sided stencil general render target views texture arrays BC4 BC5 full floating point format support all 9 3 features Logical blend operations DirectCompute CS 4 0 4 1 extended pixel formats 153 10 1 Shader Model 4 1 cubemap arrays extended MSAA all 10 0 features 11 0 Shader Model 5 0 5 1 hull amp domain shaders DirectCompute CS 5 0 5 1 16K textures BC6H BC7 extended pixel formats all 10 1 features UAV only rendering with force sample count constant buffer offsetting and partial updates double precision 64 bit floating point operations minimum floating point precision 10 or 16 bit min max filtering 11 1 Logical blend operations target independent rasterization UAVs at every pipeline stage with increased slot count UAV only rendering with force sample count constant buffer offsetting and partial updates all 11 0 features Tiled resources four tiers conservative rasterization three tiers stencil reference value from Pixel Shader rasterizer ordered views typed UAV loads for additional formats 12 0 Tiled Resources Tier 2 Texture2D Typed UAV Loads additional formats 12 1 Conservative Rasterization Tier 1 Rasterizer Ordered Views Direct3D 12 levels edit Direct3D 12 for Windows 10 requires graphics hardware conforming to feature levels 11 0 and 11 1 which support virtual memory address translations and requires WDDM 2 0 drivers There are two new feature levels 12 0 and 12 1 which include some new features exposed by Direct3D 12 that are optional on levels 11 0 and 11 1 156 Some previously optional features are realigned as baseline on levels 11 0 and 11 1 Shader Model 6 0 has been released with Windows 10 Creators Update and requires Windows 10 Anniversary Update WDDM 2 1 drivers Direct3D 12 feature levels Level Mandatory features Optional features11 0 All mandatory 11 0 features from Direct3D 11 Shader Model 5 1 Resource binding Tier 1 Logical blend operations double precision 64 bit floating point operations minimum floating point precision 10 or 16 bit Resource binding three tiers tiled resources four tiers conservative rasterization three tiers stencil reference value from Pixel Shader rasterizer ordered views typed UAV loads for additional formats view instancing Shader Model 6 0 6 7Metacommands variable shading rate raytracing mesh shaders sampler feedback Other optional features 157 UAVs at every pipeline stage UAV only rendering with force sample count constant buffer offsetting and partial updates 11 1 Logical blend operations target independent rasterization increased UAV slot count 12 0 Resource Binding Tier 2 Tiled Resources Tier 2 Texture2D Typed UAV Loads additional formats Shader Model 6 0 12 1 Conservative Rasterization Tier 1 Rasterizer Ordered Views 12 2 DirectX 12 Ultimate Shader Model 6 5 Raytracing Tier 1 1 Mesh Shaders Variable Rate Shading Sampler Feedback Resource Binding Tier 3 Tiled Resources Tier 3 Texture3D Conservative Rasterization Tier 3 40 bit virtual address space Direct3D 12 introduces a revamped resource binding model which allows explicit control of memory Abstract resource view objects 158 are now represented with resource descriptors which are allocated using memory heaps and tables 159 Resource Binding tiers define maximum number of resources that can be addressed using CBV constant buffer view SRV shader resource view and UAV unordered access view as well as texture sampler units Tier 3 hardware allows fully bindless resources only restricted by the size of the descriptor heap while Tier 1 and Tier 2 hardware impose some limits on the number of descriptors views that can be used simultaneously 160 161 Resource binding tiers Resource limits Tier 1 Tier 2 Tier 3Descriptors in CBV SRV UAV heap 1M 1M gt 1MCBVs per shader stage 14 14 full heapSRVs per shader stage 128 full heapUAVs across all stages 8 64 64 full heapSamplers per shader stage 16 full heap 64 slots on feature level 11 1 hardwareMultithreading editWDDM driver model in Windows Vista and higher supports arbitrarily large number of execution contexts or threads in hardware or in software Windows XP only supported multitasked access to Direct3D where separate applications could execute in different windows and be hardware accelerated and the OS had limited control about what the GPU could do and the driver could switch execution threads arbitrarily The ability to execute the runtime in a multi threaded mode has been introduced with Direct3D 11 runtime Each execution context is presented with a resource view of the GPU Execution contexts are protected from each other however a rogue or badly written app can take control of the execution in the user mode driver and could potentially access data from another process within GPU memory by sending modified commands Though protected from access by another app a well written app still needs to protect itself against failures and device loss caused by other applications The OS manages the threads all by itself allowing the hardware to switch from one thread to the other when appropriate and also handles memory management and paging to system memory and to disk via integrated OS kernel memory management Finer grained context switching i e being able to switch two execution threads at the shader instruction level instead of the single command level or even batch of commands was introduced in WDDM DXGI 1 2 which shipped with Windows 8 86 This overcomes a potential scheduling problem when application would have very long execution of a single command batch of commands and will have to be terminated by the OS watchdog timer 162 WDDM 2 0 and DirectX 12 have been reengineered to allow fully multithreaded draw calls This was achieved by making all resources immutable i e read only serializing the rendering states and using draw call bundles This avoids complex resource management in the kernel mode driver making possible multiple reentrant calls to the user mode driver via concurrent executions contexts supplied by separate rendering threads in the same application Direct3D Mobile editDirect3D Mobile is derived from Direct3D but has a smaller memory footprint Windows CE provides Direct3D Mobile support 163 Alternative implementations editThe following alternative implementations of Direct3D API exist They are useful for non Windows platforms and for hardware without some versions of DX support WineD3D The Wine open source project has working implementations of the Direct3D APIs via translation to OpenGL 164 Wine s implementation can also be run on Windows under certain conditions 165 vkd3d vkd3d is an open source 3D graphics library built on top of Vulkan which allows to run Direct3D 12 applications on top of Vulkan 166 It s primarily used by the Wine project 167 168 and is now included with Valve s Proton project bundled with steam on linux DXVK An open source Vulkan based translation layer for Direct3D 9 10 11 which allows running 3D applications on Linux using Wine 169 170 It is used by Proton Steam 171 for Linux DXVK is able to run a large number of modern Windows games under Linux D9VK A fork of DXVK for adding Direct3D 9 support 172 included with Steam Proton on Linux 173 On December 16 2019 D9VK was merged into DXVK 174 Gallium Nine Gallium Nine makes it possible to run Direct3D 9 applications on Linux natively i e without any calls translation which allows for a near native speed It depends on Wine and Mesa 175 176 Related tools editD3DX edit Main article D3DX Direct3D comes with D3DX a library of tools designed to perform common mathematical calculations on vectors matrices and colors calculating look at and projection matrices spline interpolations and several more complicated tasks such as compiling or assembling shaders used for 3D graphic programming compressed skeletal animation storage and matrix stacks There are several functions that provide complex operations over 3D meshes like tangent space computation mesh simplification precomputed radiance transfer optimizing for vertex cache friendliness and stripification and generators for 3D text meshes 2D features include classes for drawing screen space lines text and sprite based particle systems Spatial functions include various intersection routines conversion from to barycentric coordinates and bounding box sphere generators D3DX is provided as a dynamic link library DLL D3DX is deprecated from Windows 8 onward and can t be used in Windows Store apps 177 Some features present in previous versions of D3DX were removed in Direct3D 11 and now provided as separate sources 178 Windows SDK and Visual Studio 179 A large part of the math library has been removed Microsoft recommends use of the DirectX Math library instead Spherical harmonics math has been removed and is now distributed as source 180 The Effect framework has been removed and is now distributed as source via CodePlex 181 The Mesh interface and geometry functions have been removed and are now distributed as source via CodePlex under DirectXMesh geometry processing library 182 Texture functions have been removed and are now distributed as source via CodePlex under DirectXTex texture processing library 183 General helpers have been removed and are now distributed as source via CodePlex under DirectX Tool Kit DirectXTK project 184 The isochart texture atlas has been removed and is now distributed as source via CodePlex under UVAtlas project 185 DXUT edit DXUT also called the sample framework is a layer built on top of the Direct3D API The framework is designed to help the programmer spend less time with mundane tasks such as creating a window creating a device processing Windows messages and handling device events DXUT have been removed with the Windows SDK 8 0 and now distributed as source via CodePlex 186 See also editVulkan main competitor of Direct3D 12 OpenGL main competitor of Direct3D up to version 11 3D computer graphics ANGLE software DirectDraw DirectX collection of APIs in which Direct3D is implemented HLSL High Level Shader Language Metal API Mantle API Shader Microsoft Silverlight WebGPUReferences edit Configuring Depth Stencil Functionality Microsoft RenderStateManager UseWBuffer Microsoft Texture Blending Direct3D 9 Microsoft Geometry Blending Direct3D 9 Microsoft HLSL Microsoft Effects Direct3D 11 Microsoft DirectX Software Development Kit October 2006 Microsoft Archived from the original on November 2 2011 Windows Advanced Rasterization Platform WARP Guide WARP Architecture and Performance MSDN DirectX 8 Raising the Ante for Realism in Graphics PDF evga com Retrieved September 6 2023 Home gt GPUs ATI SMARTSHADER Technology Powering the next generation Radeon anandtech com Retrieved September 6 2023 Vertex Shaders and Pixel Shaders thg ru Retrieved September 6 2023 Vertex Shaders and Pixel Shaders archive org Retrieved September 6 2023 MicroSoft DirectX Downloads for Windows Win95 Win98 Win98SE WinME Win2000 WinXP www falconfly de Archived from the original on November 10 2006 Retrieved January 11 2022 Download DirectX 9 0c End User Runtime from Official Microsoft Download Center www microsoft com Archived from the original on July 29 2015 Retrieved January 11 2022 Qube Soft Management Team qubesoft com April 4 2017 Archived from the original on April 6 2017 Retrieved April 5 2017 a b Claro Nicole April 1995 Further Rendering PDF Game Developer Magazine Archived PDF from the original on January 26 2021 Retrieved August 21 2022 Prosise Jeff May 16 1995 Joining the Multimedia Party PC Magazine Retrieved August 20 2022 Thompson Nigel August 1996 Building a Scene Using Retained Mode Direct3D PDF Game Developer Magazine Archived PDF from the original on January 26 2021 Retrieved August 20 2022 Berkes Otto April 12 2015 DirectX Otto Berkes weblog Retrieved August 22 2022 Chen Raymond January 22 2004 What happened to DirectX 4 The Old New Thing Microsoft Retrieved August 28 2022 Press Release Microsoft Meltdown February 1997 Microsoft Corporation February 18 1997 Press Release Microsoft Meltdown July 1997 Microsoft Corporation July 22 1997 Ron Fosner Get Fast and Simple 3D Rendering with DrawPrimitive and DirectX 5 0 Microsoft Systems Journal Direct3D 7 Immediate Mode Framework Programming 3 Multitexturing gamedev net May 29 2000 Archived from the original on August 5 2011 Retrieved September 17 2011 Microsoft Ships Final Release of DirectX 6 0 Microsoft August 7 1998 Microsoft Ships DirectX 6 1 Microsoft February 3 1999 Bill Gates April 1997 Talisman Update PDF Microsoft May 5 1997 Archived from the original PDF on December 8 2015 Retrieved October 31 2015 DDS DirectDraw Surface format MSDN DirectX 7 due July 99 GameSpot UK March 1999 Archived from the original on May 8 1999 Retrieved July 20 2019 Microsoft Announces Release of DirectX 8 0 Microsoft November 9 2000 Retrieved January 7 2015 Direct Action Feature DirectX 8 0 GameSpot UK Archived from the original on February 23 2001 Retrieved July 20 2019 DirectX 8 Graphics and Video A Fresh Start gamedev net November 30 2000 Archived from the original on June 4 2007 Retrieved February 18 2007 Direct3D 9 Graphics MSDN Retrieved September 30 2014 Writing HLSL Shaders in Direct3D 9 MSDN Retrieved September 30 2014 HLSL in Direct3D 9 0 Microsoft Archived from the original on August 27 2010 Multiple Render Targets Direct3D 9 MSDN Retrieved September 30 2014 Multiple element Textures Direct3D 9 MSDN Retrieved September 30 2014 Stencil Buffer Techniques Direct3D 9 MSDN Retrieved September 30 2014 Direct3D 9Ex Improvements MSDN Retrieved September 30 2014 Graphics APIs in Windows MSDN August 2009 a b The role of the Windows Display Driver Model in the DWM April 2 2006 API Features Direct3D 10 MSDN Retrieved September 30 2014 Microsoft Support March 17 2009 Direct3D Retained Mode removed from Windows Vista Archived from the original on June 1 2013 a href Template Cite web html title Template Cite web cite web a CS1 maint unfit URL link DirectX Software Development Kit February 2007 Microsoft Archived from the original on September 3 2012 Resource Types Direct3D 10 MSDN Retrieved September 30 2014 API Layers Direct3D 10 MSDN Retrieved September 30 2014 CNet News Retrieved September 30 2014 Common Shader Core Microsoft Geometry Shader Features Microsoft Shader Stages Microsoft What Direct3D 10 is all about Additional Improvements Tom s Hardware November 8 2006 Direct3D 10 1 Features MSDN Retrieved September 30 2014 Microsoft Presents DirectX 10 1 Details at SIGGRAPH ExtremeTech August 7 2007 Direct3D 10 1 Features MSDN a b ID3D11Device CheckMultisampleQualityLevels method MSDN Retrieved September 30 2014 a b c Chuck Walbourn June 20 2012 Direct3D Feature Levels Games for Windows and the DirectX SDK Blog D3D10 FEATURE LEVEL1 enumeration MSDN Retrieved November 22 2009 Direct3D feature levels MSDN Retrieved September 30 2014 Direct3D 11 Features MSDN Retrieved September 30 2014 a b c Gamefest 2008 Presentations Microsoft Archived from the original on November 13 2013 a b Nvision 08 Tech Presentations Nvidia Retrieved September 16 2011 DirectX Software Development Kit November 2008 Microsoft November 7 2008 AMD shows off world s first DirectX 11 GPU Engadget June 3 2009 a b GameFest 2008 Introduction to the Direct3D 11 Graphics Pipeline Microsoft Slide 56 Archived from the original on January 28 2013 a b c Direct3D 11 on Downlevel Hardware MSDN Retrieved November 18 2012 a b Windows Driver Kit Supporting Direct3D 11 MSDN Retrieved June 13 2009 a b Direct3D feature levels MSDN Retrieved July 2 2012 Using ATI hardware tessellation in DX9 July 14 2008 AMD DX9 Tessellation SDK Archived from the original on November 8 2010 Programming for Real Time Tessellation on GPU PDF Archived from the original PDF on July 27 2011 OpenGL Tessellation Samples Archived from the original on April 9 2010 New Resource Types MSDN Retrieved September 30 2014 Depth Bias MSDN Retrieved September 30 2014 D3D11 RASTERIZER DESC1 structure MSDN Retrieved September 30 2014 Shader Model 5 MSDN Retrieved September 30 2014 Tessellation Overview Microsoft Tessellation Overview MSDN Retrieved September 30 2014 Description of the Platform Update for Windows Server 2008 and the Platform Update for Windows Vista Support microsoft com October 2 2012 Retrieved June 15 2013 The Platform Update for Windows Vista DirectX Developer Blog Site Home MSDN Blogs Blogs msdn com September 10 2009 Archived from the original on April 8 2014 Retrieved June 15 2013 Direct3D 11 1 Features MSDN Retrieved September 30 2014 D3D11 FEATURE DATA D3D11 OPTIONS structure MSDN Retrieved September 30 2014 DirectX feature improvements in Windows 8 MSDN Retrieved September 30 2014 Direct3D 11 1 Features MSDN Retrieved September 13 2009 DXGI 1 2 Improvements MSDN Retrieved September 30 2014 WDDM 1 2 features MSDN Retrieved September 30 2014 a b c Windows Display Driver Model Enhancements in Windows Developer Preview MSDN September 13 2011 Scalar Types Retrieved October 2 2014 Intel s Haswell IGP to Feature DirectX 11 1 Increased Professional Application Support AnandTech August 5 2011 DirectX Graphics Platform Update for Windows 7 MSDN November 14 2012 DirectX 11 1 and Windows 7 Games for Windows and the DirectX SDK Blog November 13 2012 DirectX programming MSDN Archived from the original on October 31 2013 Retrieved September 30 2014 Direct3D 11 2 Features MSDN Retrieved September 30 2014 D3D11 FEATURE DATA D3D11 OPTIONS1 structure MSDN Retrieved September 30 2014 a b Windows 8 1 Feature Guide DirectX programming MSDN Library June 26 2013 Archived from the original on August 27 2015 Retrieved June 27 2013 a b Bennett Sorbo June 26 2013 What s New in Direct3D 11 2 Channel9 BUILD 2013 DXGI 1 3 Improvements MSDN Library June 26 2013 What s new for Windows 8 1 Preview display drivers WDDM 1 3 MSDN Retrieved September 30 2014 Content Moved Windows Archived from the original on March 4 2016 Retrieved March 6 2015 D3D11 TILED RESOURCES TIER enumeration MSDN Retrieved September 30 2014 Charles Hollemeersch Matt Sandy June 26 2013 Massive Virtual Textures for Games Direct3D Tiled Resources Channel9 BUILD 2013 Direct3D 11 2 Features MSDN Library June 26 2013 MSDN Blogs MSDN Retrieved September 30 2014 D3D11 FEATURE DATA D3D9 SIMPLE INSTANCING SUPPORT structure MSDN Retrieved September 30 2014 Raising the Bar with Direct3D Building Apps for Windows October 14 2013 Retrieved September 30 2014 Microsoft officially turns down Mantle October 16 2013 Retrieved September 30 2014 Chris Tector s segment of http channel9 msdn com Blogs DirectX Developer Blog DirectX Evolving Microsoft s Graphics Platform starting approx 18 minute in Rendering Direct3D 12 Graphics Win32 apps Ryan Smith AnandTech Microsoft Details Direct3D 11 3 amp 12 New Rendering Features Retrieved September 30 2014 Ryan Smith AnandTech The NVIDIA GeForce GTX 980 Review Maxwell Mark 2 Retrieved September 30 2014 First and foremost among Maxwell 2 s new features is the inclusion of full Direct3D 11 2 11 3 compatibility a b DirectX 11 3 New Features Outline Tiled Resources Typed UAV Loads September 19 2014 Retrieved September 30 2014 D3D11 CONSERVATIVE RASTERIZATION TIER enumeration MSDN library February 22 2015 Retrieved February 22 2015 Direct3D 11 3 Features MSDN library March 28 2015 Retrieved March 28 2015 Games for Windows and the DirectX SDK blog a b Ryan Smith AnandTech Microsoft Announces DirectX 12 Low Level Graphics Programming Comes To DirectX Retrieved September 30 2014 Intel Developer Zone Intel Retrieved December 21 2022 Direct3D 12 Overview Part 1 Closer To The Metal Retrieved October 2 2014 first two minutes of https channel9 msdn com Events Build 2014 3 564 A closer look at DirectX 12 The Tech Report Page 3 March 31 2014 Retrieved September 30 2014 Ryan Smith AnandTech Microsoft Details Direct3D 11 3 amp 12 New Rendering Features Retrieved September 30 2014 Archived copy Archived from the original on April 30 2018 Retrieved September 19 2014 a href Template Cite web html title Template Cite web cite web a CS1 maint archived copy as title link a b Shader Model 5 1 Win32 apps Meet the future of PC graphics Microsoft reveals faster console like DirectX 12 PCWorld March 20 2014 Retrieved September 30 2014 DirectX 12 will also add new features for next gen GPUs March 21 2014 Retrieved September 30 2014 Kowaliski Cyril March 21 2014 DirectX 12 will also add new features for next gen GPUs The Tech Report Retrieved April 1 2014 Technical Library Intel Retrieved December 21 2022 Direct3D 12 Overview Part 7 Dynamic Heaps Retrieved October 2 2014 Multi Adapter Archived from the original on September 14 2016 Retrieved August 3 2016 Porting DirectX 12 games to Windows 7 August 21 2019 DirectX Specs Microsoft Direct3D D3D12On7 1 1 0 HLSL Shader Model 6 0 a b Announcing new DirectX 12 features DirectX Developer Blog Retrieved February 24 2018 Direct Machine Learning DirectML Microsoft Docs Retrieved June 28 2020 DirectML Microsoft Docs Coming to DirectX 12 Mesh Shaders and Amplification Shaders Reinventing the Geometry Pipeline DirectX Developer Blog Retrieved June 28 2020 Coming to DirectX 12 Sampler Feedback some useful once hidden data unlocked DirectX Developer Blog Retrieved November 4 2019 DirectX Raytracing DXR Tier 1 1 DirectX Developer Blog Retrieved November 6 2019 Coming to DirectX 12 More control over memory allocation DirectX Developer Blog Retrieved November 11 2019 Software Rasterizer for DirectX 9 0 SDK Microsoft August 1 2005 Archived from the original on September 4 2012 Direct3D Resources Memory pool Archived from the original on May 9 2008 Graphics Pipeline Direct3D 11 Graphics Microsoft Docs Retrieved October 19 2021 Input Assembler Stage Direct3D 11 Graphics Microsoft Docs Retrieved October 19 2021 Vertex Shader Stage Direct3D 11 Graphics Microsoft Docs Retrieved October 19 2021 Tessellation Stages Direct3D 11 Graphics Microsoft Docs Hull Shader Stage Retrieved October 19 2021 Tessellation Stages Direct3D 11 Graphics Microsoft Docs Tessellator Stage Retrieved October 19 2021 Tessellation Stages Direct3D 11 Graphics Microsoft Docs Domain Shader Stage Retrieved October 19 2021 Geometry Shader Stage Direct3D 11 Graphics Microsoft Docs Retrieved October 19 2021 Stream Output Stage Direct3D 11 Graphics Microsoft Docs Retrieved October 19 2021 RenderStates DirectX 9 0 for Managed Code Microsoft Docs Retrieved October 19 2021 Rasterizer Stage Direct3D 11 Graphics Microsoft Docs Retrieved October 19 2021 Pixel Shader Stage Direct3D 11 Graphics Microsoft Docs Retrieved October 19 2021 Output Merger Stage Direct3D 11 Graphics Microsoft Docs Retrieved October 19 2021 a b Direct3D 11 1 Features Win32 apps D3D11 FORMAT SUPPORT enumeration MSDN Retrieved June 16 2015 D3D11 FORMAT SUPPORT2 enumeration MSDN Retrieved June 16 2015 Hardware Tiers Win32 apps learn microsoft com Retrieved December 21 2022 D3D12 FEATURE Win32 apps Introduction to a Resource in Direct3D 11 Win32 apps Wolfgang Engel Introduction to Resource Binding in Microsoft DirectX 12 GVCS005 Microsoft Direct3D 12 New API Details and Intel Optimizations Archived April 4 2015 at the Wayback Machine Shows learn microsoft com Retrieved December 21 2022 Timeout detection and recovery TDR Windows drivers Microsoft Direct3D Mobile Microsoft 6 January 2010 The Wine team is proud to announce that the stable release Wine 4 0 WineHQ Retrieved April 3 2019 WineD3DOnWindows The Official Wine Wiki Wiki winehq org June 2 2013 Archived from the original on January 17 2009 Retrieved June 15 2013 WineHQ vkd3d Direct3D 12 April 3 2019 retrieved June 30 2020 Vkd3d 1 0 Released WineHQ Retrieved April 3 2019 Michael Larabel August 23 2019 Valve s Proton Offers Branch With VKD3D For Direct3D 12 Over Vulkan Phoronix Retrieved October 7 2019 Jason Evangelho March 1 2019 Windows 10 Versus Linux 6 Steam Games Benchmarked On Intel s Hades Canyon NUC Forbes Retrieved October 7 2019 Rebohle Philip April 3 2019 Vulkan based D3D11 and D3D10 implementation for Linux Wine doitsujin dxvk retrieved April 3 2019 Compatibility tool for Steam Play based on Wine and additional components ValveSoftware Proton Valve April 3 2019 retrieved April 3 2019 D9VK GitHub repository GitHub Retrieved October 6 2019 Michael Larabel July 30 2019 Proton Re Based To Wine 4 11 Adds D9VK Direct3D 9 Better CPU Utilization amp DXVK 1 3 Phoronix Retrieved October 7 2019 Implement Direct3D9 Frontend by Joshua Ashton Pull Request 1275 doitsujin dxvk GitHub Retrieved December 17 2019 Build Gallium Nine support on top of an existing WINE installation iXit wine nine standalone iXit Group April 3 2019 retrieved April 3 2019 Joey Sneddon October 10 2018 Ubuntu 18 10 Adds Gallium Nine Support Latest Mesa 18 2 2 OMG Ubuntu Retrieved October 7 2019 D3DX 11 Reference MSDN Retrieved September 30 2014 Living without D3DX MSDN Effect Compiler Tool Microsoft Spherical Harmonics Math msdn com Retrieved November 23 2014 Effects 11 CodePlex Retrieved September 30 2014 DirectXMesh geometry processing library CodePlex Retrieved September 30 2014 DirectXTex texture processing library CodePlex Retrieved September 30 2014 DirectX Tool Kit CodePlex Retrieved September 30 2014 UVAtrlas CodePlex Retrieved November 23 2014 DXUT for Win32 Desktop Update MSDN External links editDirectX website MSDN DirectX Graphics and Gaming DirectX 10 The Future of PC Gaming technical article discussing the new features of DirectX 10 and their impact on computer games Retrieved from https en wikipedia org w index php title Direct3D amp oldid 1183192098, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.