00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #if defined(_MSC_VER)
00025 #pragma once
00026 #endif
00027
00028 #ifndef PBRT_INTEGRATORS_DIFFUSEPRT_H
00029 #define PBRT_INTEGRATORS_DIFFUSEPRT_H
00030
00031
00032 #include "pbrt.h"
00033 #include "integrator.h"
00034
00035
00036 class DiffusePRTIntegrator : public SurfaceIntegrator {
00037 public:
00038
00039 DiffusePRTIntegrator(int lm, int ns);
00040 ~DiffusePRTIntegrator();
00041 void Preprocess(const Scene *scene, const Camera *camera, const Renderer *renderer);
00042 void RequestSamples(Sampler *sampler, Sample *sample, const Scene *scene);
00043 Spectrum Li(const Scene *scene, const Renderer *,
00044 const RayDifferential &ray, const Intersection &isect,
00045 const Sample *sample, RNG &rng, MemoryArena &arena) const;
00046 private:
00047
00048 const int lmax, nSamples;
00049 Spectrum *c_in;
00050 };
00051
00052
00053 DiffusePRTIntegrator *CreateDiffusePRTIntegratorSurfaceIntegrator(const ParamSet ¶ms);
00054
00055 #endif // PBRT_INTEGRATORS_DIFFUSEPRT_H