Let's sum up this article. The Vertex Processing Unit and the Pixel Processing Unit are the two modules of the 3D
pipeline that the developer of 3D application can program in real time. The Vertex Processing Unit is made up of
Vertex Pipelines, and executes the same vertex shader in each pipeline. A Vertex Shader is a program written in a
shading language and makes it possible to act on the attributes of a vertex (position, vectors normal, color...).
The Pixel Processing Unit is composed of Pixel Pipelines and executes the same Pixel Shader in each pipeline.
A Pixel Shader is a program written in a shading language and makes it possible to act on the color of a pixel.
The Shader Model 3.0 brings new functionalities in shaders programming, of which the most significant is the support of
the dynamic branching which allows the execution or not, of certain codepaths in a shader.
At the level of the Vertex Processing Unit, nVidia and ATI GPUs are relatively identical. The difference becomes
more evident regarding the Pixel Processing Unit: the Pixel Pipelines of the nVidia GPUs are complex while those
of ATI are simple. In the ATI GPU, the threads (groups of fragments processed at the same time) are light (few fragments)
while in the nVidia GPU, the threads are heavy (a significant number of fragments). In terms of top-of-the-line GPUs,
there are twice as many Pixel Pipelines in ATI than in nVidia. The management of the dynamic branchs on the level of
the pixel pipelines is much more powerful with Radeon GPUs. By mastering the operation of the Pixel Processing Unit of
Radeon X1950XTX, the latter seems to outclass all the other consumer cards, in terms of performance. Bravo ATI!
I hope to have somewhat cleared up the architecture of SM3/DX9 GPUs and to have sorted out the technical terms which
revolve around the description of GPUs. It is not an easy task as each has its own terms. If you, dear reader, note any
errors, have any criticisms/remarks or simply do not agree with an explanation, please give me feedback in order to update
this tutorial in a constructive manner!