下面,我们给出光线跟踪的递归算法:
RayTracer(Ray, Depth, &Color)
{
if (光线亮度衰减到小于给定值) return;
计算Ray与场景中最近的物体的交点P;
if (没有交点) Color = Background; //颜色等于背景色
else
{
阴影测试;
//在P点的颜色=P点的局部光强
Color = Local contribution at P by Hall model or somewhat else;

if (Depth>1)
{
if (当前面是镜面)
{
计算反射光线ReflectedRay;
RayTracer(ReflectedRay, Depth-1, &RefColor);
Color= Color + RefColor ;
}
if (当前面是透射面)
{
计算透射光线TransmittedRay;
RayTracer(TransmittedRay, Depth-1, &TransColor);
Color= Color + TransColor;
}
}
}
}