Unified shader model
It has been suggested that this article be merged into Stream processing. (Discuss) Proposed since August 2007. |
Unified shader model term is used to describe two similar but separate concepts: Unified Shading Architecture and Unified Shader Model.
Unified Shader Model
The Unified Shader Model, known in DirectX 10 as Shader Model 4.0, uses a consistent instruction set across all shader types. All shader types have almost the same capabilities - they can read from textures, data buffers and perform the same set of arithmetic instructions.
However, the instruction set is not completely the same between different shader types - for example, only the pixel shader can read textures with implicit coordinate gradients; only the geometry shader can emit extra rendering primitives and so on.
Early shader models (Shader Model 1.x) used very different instruction sets for vertex and pixel shaders, with vertex shaders having much more flexible instruction set. Later shader models (2.x and 3.0) reduced the differences, approaching Unified Shader Model.
Unified Shading Architecture
When graphics hardware supports Unified Shader Model, it can make sense to architect it's computational units so that any of them can run any type of shader. When computational units are "unified", that is called Unified Shading Architecture. Most often such hardware is composed of an array of computing units and a dynamic scheduling / load balancing unit that distributes shader work to the computing units.
Hardware is not required to have Unified Shading Architecture to support Unified Shader Model, and vice versa. A DirectX 10 level hardware can still have dedicated vertex, geometry and pixel processors (although because of very similar ISA, they would be quite similar on hardware level). A technologically earlier (e.g. Shader Model 3.0) hardware also can have unified architecture, as is the case with graphics chip in Xbox 360, for example.
Unified Shader Model allows more flexible use of the graphics rendering hardware. For example, in a situation with a heavy geometry workload the system could allocate most computing units to run vertex and geometry shaders. In cases with less vertex workload and heavy pixel load, more computing units could be allocated to run pixel shaders. Graphics processors that have unified shading architecture include the Nvidia GeForce 8 series, Geforce 9 series and GeForce 200 Series, ATI Radeon HD 2000 and Radeon HD 3000 series, and Intel GMA X3000 series.