RayTracer.h

Go to the documentation of this file.
00001 /**<!-------------------------------------------------------------------->
00002    @class  RayTracer
00003    @author Travis Fischer (fisch0920@gmail.com)
00004    @author Matthew Jacobs (jacobs.mh@gmail.com)
00005    @date   Fall 2008
00006 
00007    @brief
00008       Abstract ray tracing engine, with the following concrete 
00009    implementations:  WhittedRayTracer, StochasticRayTracer
00010    <!-------------------------------------------------------------------->**/
00011 
00012 #ifndef RAY_TRACER_H_
00013 #define RAY_TRACER_H_
00014 
00015 #include <renderers/PointSampleRenderer.h>
00016 
00017 struct Ray;
00018 
00019 class RayTracer : public PointSampleRenderer {
00020    public:
00021       ///@name Constructors
00022       //@{-----------------------------------------------------------------
00023       
00024       inline RayTracer(RenderOutput *output = NULL, 
00025                        Camera *camera = NULL, 
00026                        Scene *scene = NULL)
00027          : PointSampleRenderer(output, camera, scene)
00028       { }
00029       
00030       virtual ~RayTracer()
00031       { }
00032       
00033       
00034       //@}-----------------------------------------------------------------
00035       ///@name Main usage interface
00036       //@{-----------------------------------------------------------------
00037       
00038       /**
00039        * @brief
00040        *    Renders a single point sample (incident radiance evaluation) at 
00041        * the point specified on the film plane
00042        */
00043       virtual void sample(PointSample &outSample);
00044       
00045       
00046       //@}-----------------------------------------------------------------
00047       
00048    protected:
00049       /**
00050        * @brief
00051        *    Evaluates the radiance propogating in the opposite direction 
00052        * of the given ray using some type of illumination model
00053        *
00054        * @returns the spectral radiance emitted from the first surface 
00055        *    intersected along the given ray in the opposite direction from 
00056        *    the ray in the out param 'outRadiance'
00057        */
00058       virtual void _evaluate(const Ray &ray, SpectralSampleSet &outRadiance, 
00059                              PropertyMap &data) = 0;
00060 };
00061 
00062 #endif // RAY_TRACER_H_
00063 

Generated on 28 Feb 2009 for Milton by doxygen 1.5.6