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 "camera.h"
00025
00026 namespace lux
00027 {
00028
00029
00030 class EnvironmentCamera : public Camera {
00031 public:
00032
00033 EnvironmentCamera(const Transform &world2camStart, const Transform &world2camEnd, float hither,
00034 float yon, float sopen, float sclose, int sdist, Film *film);
00035 virtual ~EnvironmentCamera() { }
00036 virtual float GenerateRay(const Sample &sample, Ray *) const;
00037 virtual bool Sample_W(const TsPack *tspack, const Scene *scene, float u1, float u2, float u3, BSDF **bsdf, float *pdf, SWCSpectrum *We) const;
00038 virtual bool Sample_W(const TsPack *tspack, const Scene *scene, const Point &p, const Normal &n, float u1, float u2, float u3, BSDF **bsdf, float *pdf, float *pdfDirect, VisibilityTester *visibility, SWCSpectrum *We) const;
00039 virtual bool GetSamplePosition(const Point &p, const Vector &wi, float distance, float *x, float *y) const;
00040 virtual void ClampRay(Ray &ray) const;
00041 virtual bool IsDelta() const { return true; }
00042 virtual bool IsLensBased() const { return false; }
00043 virtual BBox Bounds() const;
00044
00045 virtual EnvironmentCamera* Clone() const {
00046 return new EnvironmentCamera(*this);
00047 }
00048
00049 static Camera *CreateCamera(const Transform &world2camStart, const Transform &world2camEnd, const ParamSet ¶ms, Film *film);
00050
00051 private:
00052 Point pos;
00053 };
00054
00055 }