00001 #ifndef LAMBERTIAN_H_ 00002 #define LAMBERTIAN_H_ 00003 00004 #include "BXDF.h" 00005 00006 namespace rcrt 00007 { 00008 00012 class Lambertian : public rcrt::BXDF 00013 { 00014 private: 00015 00016 public: 00017 Lambertian(const RGBColor& refl); 00018 virtual ~Lambertian(); 00019 00020 virtual RGBColor eval(const Vec3D& wOut, const Vec3D& wInc, const Vec3D& normal) const; 00021 virtual RGBColor evalDiffuse(const Vec3D& wOut, const Vec3D& wInc, const Vec3D& normal) const; 00022 virtual RGBColor evalSpecular(const Vec3D& wOut, const Vec3D& wInc, const Vec3D& normal) const; 00023 00024 virtual bool specular() const; 00025 virtual bool glossy() const; 00026 virtual bool diffuse() const; 00027 virtual bool fresnel() const; 00028 }; 00029 00030 } 00031 00032 #endif /*LAMBERTIAN_H_*/