m_primitives.push_back(p);
}
+void
+Scene::Add(Light* l)
+{
+}
bool
Scene::Intersect(Ray& ray)
{
- bool hit = false;
- for( std::vector<Primitive*>::iterator i = m_primitives.begin();
- i != m_primitives.end(); i++ ) {
- hit |= (*i)->Intersect(ray);
- }
- return hit;
+ bool intersect = false;
+
+ for(unsigned int i = 0; i < m_primitives.size(); ++i)
+ {
+ intersect |= m_primitives[i]->Intersect(ray);
+ }
+
+ return intersect;
}
bool
Vec3f
Scene::RayTrace(Ray& ray)
{
- return (Intersect(ray)) ? Vec3f(255,255,255) : Vec3f(0,0,0);
+ bool intersect = this->Intersect(ray);
+ return (intersect) ? ray.hit()->shader()->Shade(ray) : m_bgColor;
}
const Camera*