00001
00002
00003 #ifndef __PATH_TRACING_H
00004 #define __PATH_TRACING_H
00005
00006 #include <gra/reflection/RayTracing.h>
00007 #include <esg/visitor/MatVisitor.h>
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 using namespace esg;
00019
00020 namespace gra {
00021
00022 class GRA_EXPORT PathTracing : public RayTracing {
00023 protected:
00024 unsigned _photonsPerSurface;
00025
00026 protected:
00027 virtual void _cast_the_ray (PointEnv&, unsigned, bool, Color3f&,
00028 const Vector3&, const Vector3&);
00029
00030 virtual void _cast_secondary_rays (PointEnv&, unsigned, bool, Color3f&,
00031 MatVisitor&);
00032
00033 public:
00034 PathTracing (AutoPtr<LocalReflection> * r = NULL,
00035 const Color3f & bg= Color3f(0,0,0),
00036 Intersector * i = NULL,
00037 unsigned d = 1,
00038 float w = .001,
00039 float f = REFR_AIR,
00040 unsigned p = 1 )
00041 : RayTracing(r, bg, i, d, w, f), _photonsPerSurface(p) {}
00042 };
00043
00044 }
00045
00046 #endif // __PATH_TRACING_H