6.1.5 The OpenGL ES 3.0 graphics pipeline
It is important to know where in the graphic pipeline the programmable vertex and fragment shaders are located.
The following figure shows a schematic view of the OpenGL ES 3.0 graphic
pipeline flow. OpenGL ES 3.0 is a major step in the evolution of embedded graphics and
is derived from the OpenGL 3.3 specification.
Figure 6-2 OpenGL ES 3.0 Programmable Pipeline
- In the primitives stage the pipeline operates on the geometric
primitives described by vertices, points, lines and polygons.
- Vertex Shader
- The vertex shader implements a general-purpose programmable
method for operating on vertices. The vertex shader transforms and lights
- Primitive assembly
- In primitive assembly the vertices are assembled into geometric
primitives. The resulting primitives are clipped to a clipping volume and sent
to the rasterizer.
- Output values from the vertex shader are calculated for every generated
fragment. This process is known as interpolation. During rasterization, the
primitives are converted into a set of two-dimensional fragments that are then
sent to the fragment shader.
- Transform feedback
- Transform feedback, enables writing selective writing to an
output buffer that the vertex shader outputs and is later sent back to the
vertex shader. This feature is not exposed by Unity but it is used internally,
for example, to optimize the skinning of characters.
- Fragment shader
- The fragment shader implements a general-purpose programmable
method for operating on fragments before they are sent to the next stage.
- Per-fragment operations
- In Per-fragment operations several functions and tests are
applied on each fragment: pixel ownership test, scissor test, stencil and depth
tests, blending and dithering. As a result of this per-fragment stage either the
fragment is discarded or the fragment color, depth or stencil value is written
to the frame buffer in screen coordinates.