00001 #include "DebugMaterial.h"
00002
00003 namespace rcrt
00004 {
00005
00006 DebugMaterial::DebugMaterial()
00007 {
00008 }
00009
00010 DebugMaterial::~DebugMaterial()
00011 {
00012 }
00013
00014 RGBColor DebugMaterial::sample(const Vec3D& wOut, const Vec3D& wInc,
00015 Intersection& is)
00016 {
00017
00018 if(is.backSide())
00019 return RGBColor(1,1,1);
00020 Vec3D no = getShadingNormal(is).abs();
00021
00022 return RGBColor(no.x(),no.y(),no.z());
00023 }
00024
00025
00026 bool DebugMaterial::hasDiffuse() const
00027 {
00028 return true;
00029 }
00030
00031 bool DebugMaterial::hasSpecular() const
00032 {
00033 return false;
00034 }
00035
00036 bool DebugMaterial::hasTransmissive() const
00037 {
00038 return false;
00039 }
00040
00041 RGBColor DebugMaterial::getEmitted(const Vec3D& wOut, Intersection& is)
00042 {
00043 return 0;
00044 }
00045
00046 RGBColor DebugMaterial::sampleDiffuse(const Vec3D& wOut, const Vec3D& wInc, Intersection& is)
00047 {
00048 return sample(wOut,wInc,is);
00049 }
00050
00051 RGBColor DebugMaterial::sampleSpecular(const Vec3D& wOut, const Vec3D& wInc, Intersection& is)
00052 {
00053 return 0;
00054 }
00055
00056 bool DebugMaterial::refracts() const
00057 {
00058 return false;
00059 }
00060
00061 ScatterEvent DebugMaterial::scatterPhoton(Intersection& is, Photon* photon)
00062 {
00063 const Vec3D no = is.getSNormalW().abs();
00064 photon->setPower(RGBColor(no.x(),no.y(),no.z()));
00065 return STORE;
00066 }
00067
00068
00069 }