Ray3 Camera::computePickRay(Vector2 const & screen_pos) const { Vector2 p = 0.5f * (screen_pos + Vector2(1, 1)); Ray3 view_ray(Vector3::zero(), Vector3(left + p.x() * (right - left), bottom + p.y() * (top - bottom), -near_dist).unit()); return view_ray.toWorldSpace(frame); }
void Raytracer::lightPixel(int u, int v) { RGB color; Ray r; int numViewRays = 50; for(int i = 0; i < numViewRays ; i++) { RGB view_ray(0); camera->genViewingRay(u, v, r); traceRay(r, view_ray, 2); color += view_ray; } color /= numViewRays; img.setPixelColor(u, v , color); }