Direct3D 10
Windows Vista includes a major update to the Direct3D API. Originally called WGF 2.0 (Windows Graphics Foundation 2.0), DirectX 10 and DirectX Next, it features an updated shader model (version 4) — the shaders still consist of fixed stages like on previous APIs, but all stages sport a nearly unified interface, as well as a unified access to resources. The language itself has been extended to be more expressive (integer operations, nearly unlimited instructions count). 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 for more complex effects in real time. Direct3D 10 no longer uses "capability bits" to indicate which features are active on the current hardware. Instead, it defines a minimum standard of hardware capabilities which must be supported for a display system to be "Direct3D 10 compatible".
Therefore, contrary to the previous revisions of Direct3D, it requires new graphics hardware backed by WDDM-compliant drivers to run at all, whereas prior versions allow the old hardware capabilities to be addressed within the new interface. This is one of the major departure of this new API, and it is justified by Microsoft as the only way to achieve the CPU efficiency gains needed for the newest pieces of hardware without the clutter of legacy code.
Because Direct3D 10 hardware will be comparatively rare for a period of time after the release of Windows Vista, and because the Vista Premium logo program does not require Direct3D 10 to be supported, the first D3D10-compatible games will most likely still provide a Direct3D 9 render path.
New features
* Fixed pipelines 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.
* Paging of graphics memory, to allow data to be loaded to Video RAM when needed and move it out when not needed. This enables usage of the system memory to hold graphics data, such as textures, thereby allowing use of more and higher resolution textures in games (this was possible with older DirectX APIs by using the GART).
* There is no limit on the number of objects which can be rendered, provided enough resources are available.
* Virtualization of the graphics hardware, to allow multiple threads/processes to use it, in turns.
* New state object to enable the GPU to change states efficiently.
* Shader model 4.0, enhances the programmability of the graphics pipeline. It adds instructions for integer and bitwise calculations.
* Geometry shaders, which work on individual triangles which form a mesh.
* Texture arrays enable swapping of textures in GPU without CPU intervention.
* Resource View enables pre-caching of resources, thereby reducing latency.
* 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 cell, reducing the processing time needed for multiple similar objects to that of a single one.