Rasterization is one of the typical techniques of rendering 3D models. Compared with other rendering techniques such as
ray tracing, rasterization is extremely fast and therefore used in most realtime 3D engines. However, rasterization is simply the process of computing the mapping from scene geometry to pixels and does not prescribe a particular way to compute the color of those pixels. The specific color of each pixel is assigned by a
pixel shader (which in modern
GPUs is completely
programmable). Shading may take into account physical effects such as light position, their approximations or purely artistic intent. The process of rasterizing 3D models onto a 2D plane for display on a
computer screen ("
screen space") is often carried out by fixed function (non-programmable) hardware within the
graphics pipeline. This is because there is no motivation for modifying the techniques for rasterization used at render time and a special-purpose system allows for high efficiency.
Triangle rasterization Polygons are a common representation of digital 3D models. Before rasterization, individual polygons are typically broken down into triangles; therefore, a typical problem to solve in 3D rasterization is rasterization of a triangle. Properties that are usually required from triangle rasterization algorithms are that rasterizing two adjacent triangles (i.e. those that share an edge) • leaves no holes (non-rasterized pixels) between the triangles, so that the rasterized area is completely filled (just as the surface of adjacent triangles). And • no pixel is rasterized more than once, i.e. the rasterized triangles don't overlap. This is to guarantee that the result doesn't depend on the order in which the triangles are rasterized. Overdrawing pixels can also mean wasting computing power on pixels that would be overwritten. This leads to establishing
rasterization rules to guarantee the above conditions. One set of such rules is called a
top-left rule, which states that a pixel is rasterized if and only if • its center lies completely inside the triangle, or • its center lies exactly on the triangle edge (or multiple edges in case of corners)that is (or, in case of corners, all are), either the
top or
left edge. A
top edge is an edge that is exactly horizontal and lies above other edges, and a
left edge is a non-horizontal edge that is on the left side of the triangle. This rule is implemented e.g. by
Direct3D and many
OpenGL implementations (even though the specification doesn't define it and only requires a consistent rule). == Quality ==