00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include "lux.h"
00029 #include "transport.h"
00030 #include "scene.h"
00031
00032 namespace lux
00033 {
00034
00035 typedef enum {
00036 DEBUG_U, DEBUG_V,
00037 DEBUG_GEOM_NORMAL_X,
00038 DEBUG_GEOM_NORMAL_Y,
00039 DEBUG_GEOM_NORMAL_Z,
00040 DEBUG_SHAD_NORMAL_X,
00041 DEBUG_SHAD_NORMAL_Y,
00042 DEBUG_SHAD_NORMAL_Z,
00043 DEBUG_ONE,
00044 DEBUG_ZERO,
00045 DEBUG_HIT_SOMETHING
00046 } DebugVariable;
00047
00048 class DebugIntegrator : public SurfaceIntegrator {
00049 public:
00050
00051 Spectrum Li(const Scene *scene, const RayDifferential &ray,
00052 const Sample *sample, float *alpha) const;
00053 DebugIntegrator( DebugVariable v[3] )
00054 {
00055 debug_variable[0] = v[0];
00056 debug_variable[1] = v[1];
00057 debug_variable[2] = v[2];
00058 }
00059 virtual DebugIntegrator* clone() const;
00060 IntegrationSampler* HasIntegrationSampler(IntegrationSampler *is) { return NULL; };
00061 static SurfaceIntegrator *CreateSurfaceIntegrator(const ParamSet ¶ms);
00062 private:
00063 DebugVariable debug_variable[3];
00064 };
00065
00066 }
00067