protected virtual WideColor ShootRay(Shapes.Ray ray, int level) { if (level == MaxRecursionDepth) { return Color.Red.ToWide(); } //Find nearest Hit CollisionDetails c = Scene.FindNearestHit(ray); //No hit if (c.Obj == null) { return Color.White.ToWide(); } //Calculate hit point Vect3 hitPoint = ray.Origin + ray.Direction*c.Distance; //Return object's color at hit point return c.Obj.GetColorAt(hitPoint).ToWide(); }