예제 #1
0
파일: Camera.cpp 프로젝트: sidch/DGP
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);
}
예제 #2
0
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);
}