XXX this could be converted/formatted for Sphinx someday.
XXX do not use tabs in this file.
position ]
primary/secondary colors ]
generics (normals, ]
texcoords, fog) ] User vertices / arrays
point size ]
edge flag ]
primitive ID } System-generated values
vertex ID }
| | |
V V V
+-------------------+
| Vertex shader |
+-------------------+
| | |
V V V
position
clip distance
generics
front/back & primary/secondary colors
point size
edge flag
primitive ID
| | |
V V V
+------------------------+
| Geometry shader |
| (consume vertex ID) |
| (may change prim type) |
+------------------------+
| | |
V V V
[...]
fb layer
| | |
V V V
+--------------------------+
| Clipper |
| (consume clip distances) |
+--------------------------+
| | |
V V V
+-------------------+
| Polygon Culling |
+-------------------+
| | |
V V V
+-----------------------+
| Choose front or |
| back face color |
| (consume other color) |
+-----------------------+
| | |
V V V
[...]
primary/secondary colors only
| | |
V V V
+-------------------+
| Polygon Offset |
+-------------------+
| | |
V V V
+----------------------+
| Unfilled polygons |
| (consume edge flags) |
| (change prim type) |
+----------------------+
| | |
V V V
position
generics
primary/secondary colors
point size
primitive ID
fb layer
| | |
V V V
+---------------------------------+
| Optional Draw module helpers |
| * Polygon Stipple |
| * Line Stipple |
| * Line AA/smooth (as tris) |
| * Wide lines (as tris) |
| * Wide points/sprites (as tris) |
| * Point AA/smooth (as tris) |
| (NOTE: these stages may emit |
| new/extra generic attributes |
| such as texcoords) |
+---------------------------------+
| | |
V V V
position ]
generics (+ new/extra ones) ]
primary/secondary colors ] Software rast vertices
point size ]
primitive ID ]
fb layer ]
| | |
V V V
+---------------------+
| Triangle/Line/Point |
| Rasterization |
+---------------------+
| | |
V V V
generic attribs
primary/secondary colors
primitive ID
fragment win coord pos } System-generated values
front/back face flag }
| | |
V V V
+-------------------+
| Fragment shader |
+-------------------+
| | |
V V V
zero or more colors
zero or one Z value
NOTE: The instance ID is not shown. It can be imagined to be a global variable
accessible to all shader stages.