//---------------------------------------------------------------------------- // William Baxter III's Ray Tracer // // Project for Comp 238, Raster Graphics // University of North Carolina at Chapel Hill // // $Id:$ //---------------------------------------------------------------------------- #ifndef WB3EXTENDEDLIGHT_H #define WB3EXTENDEDLIGHT_H #include #include "ray3f.hpp" #include "wb3PointLight.hpp" //---------------------------------------------------------------------------- class wb3Scene; class wb3Artifact; class wb3ExtendedLight : public wb3PointLight { public: wb3ExtendedLight(const Vec3f& positon = Vec3f::ZERO); wb3ExtendedLight(const Vec3f& color, const Vec3f& positon, float radius); ~wb3ExtendedLight() {}; float GetRadius() const; void SetRadius(float radius); void PerturbSample(Vec3f& pos, const Vec3f& u, const Vec3f& v) const; virtual void Contribute( const wb3Scene *scene, const wb3Artifact *hit, const Ray3f& r, const Vec3f &isect, const Vec3f &N, Vec3f& color) const; protected: float m_fRadius; }; //---------------------------------------------------------------------------- inline float wb3ExtendedLight::GetRadius() const { return m_fRadius; } //---------------------------------------------------------------------------- inline void wb3ExtendedLight::SetRadius(float radius) { m_fRadius = radius; } //---------------------------------------------------------------------------- #endif