The algorithm used is the standard screen-space subdivision ray tracing, where parts of the screen (in this case, pixels) are assigned to different processors for parallel processing. Each processor computes the initial ray depending on its position on the screen, then traces the way into the model, intersecting with the objects, reflecting and shading as necessary.
The outline for each processor's algorithm is as follows:
ray <-- initial ray for each generation do MinT <-- MaxInt for each sphere do Enable this processor T <-- intersect Ray with Sphere if T is imaginary or T < 0 or T > MinT then Disable this processor endif MinT <-- T Pt <-- Ray * T Norm <-- (Pt - SphereCenter) / Radius Shade based on Normal dotted with light vector Ray <-- Reflection ray Disable this pixel for future calculations in this generation end end
The projection can be orthogonal, where the tail of the initial ray is variable but the direction is constant, or perspective, where the opposite is true.