00001 #ifndef IMAGEMATERIAL_H_
00002 #define IMAGEMATERIAL_H_
00003
00004 #include "Material.h"
00005
00006 namespace rcrt
00007 {
00008
00009 class ImageMaterial : public rcrt::Material
00010 {
00011 private:
00012 ImageTexture* imageTex;
00013 public:
00014 ImageMaterial(ImageTexture* i, float iorR=1, float iorI=0);
00015 ImageMaterial(ImageTexture* i, const std::complex<float>& IOR);
00016 virtual ~ImageMaterial();
00017
00018 virtual RGBColor sample(const Vec3D& wOut, const Vec3D& wInc, Intersection& is);
00019 virtual RGBColor sampleDiffuse(const Vec3D& wOut, const Vec3D& wInc, Intersection& is);
00020 virtual RGBColor sampleSpecular(const Vec3D& wOut, const Vec3D& wInc, Intersection& is);
00021 virtual RGBColor getEmitted(const Vec3D& wOut, Intersection& is);
00022 virtual ScatterEvent scatterPhoton(Intersection& is, Photon* photon);
00023
00024 virtual bool hasDiffuse() const;
00025 virtual bool hasSpecular() const;
00026 virtual bool hasTransmissive() const;
00027 };
00028
00029 }
00030
00031 #endif