Graphics pipeline

From Wikipedia, the free encyclopedia

In 3D computer graphics, the terms graphics pipeline or rendering pipeline most commonly refer to the current state of the art method of rasterization-based rendering as supported by commodity graphics hardware[1]. The graphics pipeline typically accepts some representation of a three-dimensional scene as an input and results in a 2D raster image as output. OpenGL and Direct3D are two notable graphics pipeline models accepted as widespread industry standards.

Contents

[edit] Stages of the graphics pipeline[2]

[edit] Modeling transformation

In this stage the 3D geometry provided as input is established in what is known as 3D world space—a conceptual orientation and arrangement in 3D space. This could include transformations on the local object space of geometric primitives such as translation (geometry) and rotation.

[edit] Per-vertex lighting

For more details on this topic, see Vertex shader.

Geometry in the complete 3D scene is lit according to the defined locations of light sources and reflectance and other surface properties. Current hardware implementations of the graphics pipeline compute lighting only at the vertices of the polygons being rendered. The lighting values between vertices are then interpolated during rasterization. Per-fragment (ie. per-pixel) lighting can be done on modern graphics hardware as a post-rasterization process by means of a shader program.

[edit] Viewing transformation

For more details on this topic, see Geometry shader.

Objects are transformed from 3D world space coordinates into a 3D coordinate system based on the position and orientation of a virtual camera. This results in the original 3D scene as seen from the camera’s point of view, defined in what is called eye space or camera space.

[edit] Projection transformation

For more details on this topic, see Pixel shader.

In this stage of the graphics pipeline, geometry is transformed from the eye space of the rendering camera into 2D image space, mapping the 3D scene onto a plane as seen from the virtual camera.

[edit] Clipping

For more details on this topic, see Clipping (computer graphics).

Geometric primitives that now fall outside of the viewing frustum will not be visible and are discarded at this stage. Clipping is not necessary to achieve a correct image output, but it accelerates the rendering process by eliminating the unneeded rasterization and post-processing on primitives that will not appear anyway.

[edit] Texturing, fragment shading

For more details on this topic, see Texture mapping unit.

At this stage of the pipeline individual fragments (or pre-pixels) are assigned a color based on values interpolated from the vertices during rasterization or from a texture in memory.

[edit] Scan conversion or rasterization

For more details on this topic, see Render Output unit.

Rasterization is the process by which the 2D image space representation of the scene is converted into raster format and the correct resulting pixel values are determined.

[edit] Display

The final colored pixels can then be displayed on a computer monitor or other display.

[edit] The graphics pipeline in hardware

For more details on this topic, see Pixel pipeline.

The rendering pipeline is mapped onto current graphics acceleration hardware such that the input to the graphics card (GPU) is in the form of vertices. These vertices then undergo transformation and per-vertex lighting. At this point in modern GPU pipelines a custom vertex shader program can be used to manipulate the 3D vertices prior to rasterization. Once transformed and lit, the vertices undergo clipping and rasterization resulting in fragments. A second custom shader program can then be run on each fragment before the final pixel values are output to the frame buffer for display.

The graphics pipeline is well suited to the rendering process because it allows the GPU to function as a stream processor since all vertices and fragments can be thought of as independent. This allows all stages of the pipeline to be used simultaneously for different vertices or fragments as they work their way through the pipe. In addition to pipelining vertices and fragments, their independence allows graphics processors to use parallel processing units to process multiple vertices or fragments in a single stage of the pipeline at the same time.

[edit] References

  1. ^  Graphics pipeline. (n.d.). Computer Desktop Encyclopedia. Retrieved December 13, 2005, from Answers.com: [3]
  2. ^  Raster Graphics and Color 2004 by Greg Humphreys at the University of Virginia

[edit] See also

[edit] External links