00001 #ifndef DIELECTRICMATERIAL_H_ 00002 #define DIELECTRICMATERIAL_H_ 00003 00004 #include "Material.h" 00005 00006 namespace rcrt 00007 { 00008 00009 class DielectricMaterial : public rcrt::Material 00010 { 00011 public: 00012 DielectricMaterial(const float& realIOR = 1, const RGBColor& absorb = RGBColor::BLACK); 00013 virtual ~DielectricMaterial(); 00014 00015 virtual RGBColor sample(const Vec3D& wOut, const Vec3D& wInc, Intersection& is); 00016 virtual RGBColor sampleDiffuse(const Vec3D& wOut, const Vec3D& wInc, Intersection& is); 00017 virtual RGBColor sampleSpecular(const Vec3D& wOut, const Vec3D& wInc, Intersection& is); 00018 virtual RGBColor getEmitted(const Vec3D& wOut, Intersection& is); 00019 virtual ScatterEvent scatterPhoton(Intersection& is, Photon* photon); 00020 00021 virtual bool hasDiffuse() const; 00022 virtual bool hasSpecular() const; 00023 virtual bool hasTransmissive() const; 00024 virtual bool refracts() const; 00025 }; 00026 00027 } 00028 00029 #endif /*DIELECTRICMATERIAL_H_*/