//---------------------------------------------------------------------------- // William Baxter III's Ray Tracer // // Project for Comp 238, Raster Graphics // University of North Carolina at Chapel Hill // // $Id:$ //---------------------------------------------------------------------------- #ifndef WB3LIGHT_H #define WB3LIGHT_H #include #include "ray3f.hpp" //---------------------------------------------------------------------------- class wb3Scene; class wb3Artifact; class wb3Light { public: wb3Light(); wb3Light(const Vec3f& color); ~wb3Light() {}; const Vec3f& GetColor() const; void SetColor(const Vec3f& color); void SetColor(float intensity); bool GetShadowing() const; void SetShadowing(bool doesShadows); virtual void Contribute(const wb3Scene *scene, const wb3Artifact *hit, const Ray3f& r, const Vec3f &isect, const Vec3f &N, Vec3f& color) const = 0; protected: Vec3f m_Color; bool m_bShadow; }; //---------------------------------------------------------------------------- inline const Vec3f& wb3Light::GetColor() const { return m_Color; } //---------------------------------------------------------------------------- inline void wb3Light::SetColor(const Vec3f& color) { m_Color = color; } //---------------------------------------------------------------------------- inline void wb3Light::SetColor(float intensity) { m_Color = Vec3f(intensity, intensity, intensity); } //---------------------------------------------------------------------------- inline bool wb3Light::GetShadowing() const { return m_bShadow; } //---------------------------------------------------------------------------- inline void wb3Light::SetShadowing(bool doShadows) { m_bShadow = doShadows; } //---------------------------------------------------------------------------- #endif