Vertex Processing

From OpenGL Wiki
Jump to navigation Jump to search

Vertex Processing is the stage of the OpenGL rendering pipeline where a sequence of vertices are processed via a series of Shaders.

Vertex Shader

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 evaluation shader exists, then the outputs from the vertex shader are passed to the next stage.

Geometry Shader

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.