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.