00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "sampling.h"
00025 #include "paramset.h"
00026 #include "film.h"
00027
00028 namespace lux
00029 {
00030
00031
00032 class LDSampler : public Sampler {
00033 public:
00034
00035 LDSampler(int xstart, int xend,
00036 int ystart, int yend,
00037 int nsamp, string pixelsampler);
00038 virtual ~LDSampler();
00039
00040 virtual int RoundSize(int size) const {
00041 return RoundUpPow2(size);
00042 }
00043 virtual void GetBufferType(BufferType *type) {*type = BUF_TYPE_PER_PIXEL;}
00044 virtual u_int GetTotalSamplePos();
00045 virtual bool GetNextSample(Sample *sample, u_int *use_pos);
00046 virtual float *GetLazyValues(Sample *sample, u_int num, u_int pos);
00047 virtual LDSampler* clone() const;
00048
00049 static Sampler *CreateSampler(const ParamSet ¶ms, const Film *film);
00050 private:
00051
00052 int xPos, yPos, pixelSamples;
00053 int samplePos;
00054 float *imageSamples, *lensSamples, *timeSamples, *wavelengthsSamples,
00055 *singleWavelengthSamples;
00056 float **oneDSamples, **twoDSamples, **xDSamples;
00057 int n1D, n2D, nxD;
00058 u_int TotalPixels;
00059 PixelSampler* pixelSampler;
00060 };
00061
00062 }
00063