- Vertex Specification
- Vertex Processing
- Vertex Post-Processing
- Primitive Assembly
- Fragment Shader
- Per-Sample Processing
The vertex shader is the programmable stage in the rendering pipeline that handles the processing of individual vertices. A vertex shader receives a single vertex composed of a series of Vertex Attributes. This input vertex is processed arbitrarily to produce an output vertex. There must be a 1:1 mapping from input vertices to output vertices.
This stage takes the vertices output from the previous stage, pulls them into primitives, and tessellates those primitives based on shader logic and a fixed-function tessellation system. It is optional; if no tessellation shaders are present and no tessellation operations are invoked, then the outputs from the vertex shader are passed to the next stage.
A geometry shader (GS) is a Shader program that governs the processing of primitives. A GS can create new primitives, unlike vertex shaders, which are limited to a 1:1 input to output ratio. A GS can also perform layered rendering, where different primitives can be rendered to different attached layered images.
The GS is optional; if it is not present, primitives passed from prior stages are given to the next stage directly.