00001
00002
00003 #ifndef __REFLECTION_MODEL_H
00004 #define __REFLECTION_MODEL_H
00005
00006 #include <gra/GRAObject.h>
00007 #include <esg/brdf/DiffuseBRDF.h>
00008 #include <esg/brdf/SpecularBRDF.h>
00009 #include <esg/emittance/Emittance.h>
00010 #include <esg/visitor/MatVisitor.h>
00011 #include <esg/Definitions.h>
00012 #include <esg/SceneGraphObject.h>
00013 #include <gra/scene/Scene.h>
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 using namespace esg;
00034
00035 namespace gra {
00036
00037 class GRA_EXPORT ReflectionModel : public GRAObject {
00038 protected:
00039 DiffuseBRDF * _pDiffuseBRDF;
00040 SpecularBRDF * _pSpecularBRDF;
00041 Emittance * _pEmittance;
00042 Scene * _pScene;
00043
00044 public:
00045 ReflectionModel (DiffuseBRDF * db = NULL,
00046 SpecularBRDF * sb = NULL,
00047 Emittance * e = NULL)
00048 : _pDiffuseBRDF(db),
00049 _pSpecularBRDF(sb),
00050 _pEmittance(e),
00051 _pScene(NULL) {}
00052
00053 virtual ~ReflectionModel () {}
00054
00055 virtual void setDiffuseBRDF (DiffuseBRDF * b) { _pDiffuseBRDF = b; }
00056 virtual void setSpecularBRDF (SpecularBRDF * b) { _pSpecularBRDF = b; }
00057 virtual void setEmittance (Emittance * e) { _pEmittance = e; }
00058 virtual void setScene (Scene * s) { _pScene = s; }
00059
00060 virtual Color3f* illuminatePoint(PointEnv& ) = 0;
00061 };
00062
00063 }
00064
00065 #endif // __REFLECTION_MODEL_H