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.