Library/Graphics/Graphics Pipeline

Lights, Camera, Action! ... Geometry, Transformations, and Materials
A graphics pipeline has a small set of core types of objects:
 * Camera
 * Lights
 * Geometry
 * Transformations
 * Materials

The rest of the graphics engine is essentially only about (1) defining those specific types, (2) defining how the three types interact, and (3) producing acceleration structures to ensure the final image from those interactions can be determined as quickly as possible.

The essential task of computer graphics is to determine what surfaces are visible and for every visible point on the surface, produce a color based on the light reaching that surface, the material properties of the material on that surface, and the properties of th surface itself at that point.

Ray-Tracing and Rasterization
There are two major algorithms for determining the lighting at which surface points of which objects should be used to create the final image: ray-tracing and rasterization. In modern engines, a hybrid or variation of the approaches is used. For example, shadow mapping is a traditional feature of rasterization-based engines - but parts of the feature itself are quite similar to those encountered in ray-tracing. Therefore, ray-tracing and rasterization present two manners of approaching the same problem but the best solutions may require a mixed technique.

Ray-Tracing
Ray-tracing is an algorithm for generating graphics that works by tracing the path of light that reaches the viewpoint back to its origin at the light source. For each pixel on the display, ray-tracing computes the direction of the incoming light, determines what object or objects are in the path of that incoming light, and determines the surface lighting for that point on the object.

In vastly simplified terms, the ray-tracing algorithm works something like:

Rasterization
Rasterization is an algorithm that takes the inverse approach: rather than considering each point that is lit on the display and determining the objects see from that point, it loops through the objects and determines which pixels that object affects.

In simplified terms, the rasterization algorithm works something like:

Comparison
Ray-tracing is generally taught first to graphics students as it is more physically-based and therefore, arguably, more intuitively understood. Rasterization, as an algorithm, is motivated more by its efficiencies in practical implementation - and thus, taught later, but used often.