1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
1. Evaluators - producing vertices for primitives described by NURBS
2. Transform - transform all vertices according to the ModelView
matrices and the color and texture coordinate associated with them are
computed (vertex shaders are used). The data associated with each vertex
include:
a) Coordinates: x,y,z,w
b) Normal vector
c) Texture coordinates
d) Color (given or computed according to light model)
e) Edge-flag data (?)
Operations Sequence:
a) In the per-vertex operations stage of processing, each vertex's spatial
coordinates are transformed by the modelview matrix, while the normal
vector is transformed by that matrix's inverse and renormalized if
specified.
b) New texture coordinates are generated from the transformed vertex
coordinates.
c) The texture coordinates are then transformed by the current texture
matrix
d) Using the transformed vertex and normal vector coordinates, and a light
model, the vertex color is computed
3. Primitive assemby - vertix filtering (geometry shaders may be used here)
a) If clipping planes are given, the vertices are filtered trough them.
b) While line or polygon is cliped the additional vertices may be added
depending on how the line or polygon is clipped
c) Projection matrix is used to convert coordinates of all vertices
d) The resuls are clipped against viewing planes
4. Rasterization - the fragments (images) are constructed from primitives,
the pixel shaders are used here.
a) Rasterization involves determining which squares of an integer grid in
window coordinates are occupied by the primitive. Color and depth values
are assigned to each such square.
b) Textures are applied to fragments
c) Fog calculations are performed
5. Tests - checking if vertex could be filtered out
a) Scissor test (see above)
b) Alpha test (it is possible to ignore pixels with alpha <>= refval)
c) Stencil test (see above)
d) Depth test (skipping objects below the scene, z-buffer is filled
automatically if Depth test is enable and Depth mask is set to true)
6. Blending - combining with pixel currently in buffer at that position
replace, blending effect, dithering effect
|