#include <infinite.h>
Public Member Functions | |
InfiniteAreaLight (const Transform &light2world, const Spectrum &power, int ns, const string &texmap) | |
~InfiniteAreaLight () | |
Spectrum | Power (const Scene *) const |
bool | IsDeltaLight () const |
Spectrum | Le (const RayDifferential &r) const |
Spectrum | Sample_L (const Point &p, float pEpsilon, const LightSample &ls, float time, Vector *wi, float *pdf, VisibilityTester *visibility) const |
Spectrum | Sample_L (const Scene *scene, const LightSample &ls, float u1, float u2, float time, Ray *ray, Normal *Ns, float *pdf) const |
float | Pdf (const Point &, const Vector &) const |
void | SHProject (const Point &p, float pEpsilon, int lmax, const Scene *scene, bool computeLightVis, float time, RNG &rng, Spectrum *coeffs) const |
Private Attributes | |
MIPMap< RGBSpectrum > * | radianceMap |
Distribution2D * | distribution |
Definition at line 40 of file infinite.h.
InfiniteAreaLight::InfiniteAreaLight | ( | const Transform & | light2world, | |
const Spectrum & | power, | |||
int | ns, | |||
const string & | texmap | |||
) |
Definition at line 60 of file infinite.cpp.
References distribution, MIPMap< T >::Lookup(), M_PI, radianceMap, ReadImage(), RGBSpectrum::ToRGBSpectrum(), and RGBSpectrum::y().
InfiniteAreaLight::~InfiniteAreaLight | ( | ) |
Definition at line 54 of file infinite.cpp.
References distribution, and radianceMap.
bool InfiniteAreaLight::IsDeltaLight | ( | ) | const [inline, virtual] |
Implements Light.
Definition at line 47 of file infinite.h.
Spectrum InfiniteAreaLight::Le | ( | const RayDifferential & | r | ) | const [virtual] |
Reimplemented from Light.
Definition at line 109 of file infinite.cpp.
References Ray::d, INV_PI, INV_TWOPI, MIPMap< T >::Lookup(), Normalize(), radianceMap, SPECTRUM_ILLUMINANT, SphericalPhi(), SphericalTheta(), and Light::WorldToLight.
Referenced by InfiniteAreaCube::operator()(), and SHProject().
Implements Light.
Definition at line 216 of file infinite.cpp.
References distribution, INV_PI, INV_TWOPI, M_PI, Distribution2D::Pdf(), SphericalPhi(), SphericalTheta(), and Light::WorldToLight.
Implements Light.
Definition at line 100 of file infinite.cpp.
References BBox::BoundingSphere(), MIPMap< T >::Lookup(), M_PI, radianceMap, SPECTRUM_ILLUMINANT, and Scene::WorldBound().
Spectrum InfiniteAreaLight::Sample_L | ( | const Scene * | scene, | |
const LightSample & | ls, | |||
float | u1, | |||
float | u2, | |||
float | time, | |||
Ray * | ray, | |||
Normal * | Ns, | |||
float * | ||||
) | const [virtual] |
Implements Light.
Definition at line 229 of file infinite.cpp.
References BBox::BoundingSphere(), ConcentricSampleDisk(), CoordinateSystem(), distribution, INFINITY, Light::LightToWorld, MIPMap< T >::Lookup(), M_PI, radianceMap, Distribution2D::SampleContinuous(), SPECTRUM_ILLUMINANT, LightSample::uPos, and Scene::WorldBound().
Spectrum InfiniteAreaLight::Sample_L | ( | const Point & | p, | |
float | pEpsilon, | |||
const LightSample & | ls, | |||
float | time, | |||
Vector * | wi, | |||
float * | pdf, | |||
VisibilityTester * | visibility | |||
) | const [virtual] |
Implements Light.
Definition at line 187 of file infinite.cpp.
References distribution, Light::LightToWorld, MIPMap< T >::Lookup(), M_PI, radianceMap, Distribution2D::SampleContinuous(), VisibilityTester::SetRay(), SPECTRUM_ILLUMINANT, and LightSample::uPos.
void InfiniteAreaLight::SHProject | ( | const Point & | p, | |
float | pEpsilon, | |||
int | lmax, | |||
const Scene * | scene, | |||
bool | computeLightVis, | |||
float | time, | |||
RNG & | rng, | |||
Spectrum * | coeffs | |||
) | const [virtual] |
Reimplemented from Light.
Definition at line 117 of file infinite.cpp.
References ALLOCA, MIPMap< T >::Height(), Le(), Light::LightToWorld, M_PI, Normalize(), radianceMap, SHEvaluate(), SHProjectCube(), SHTerms(), SPECTRUM_ILLUMINANT, MIPMap< T >::Texel(), and MIPMap< T >::Width().
Distribution2D* InfiniteAreaLight::distribution [private] |
Definition at line 59 of file infinite.h.
Referenced by InfiniteAreaLight(), Pdf(), Sample_L(), and ~InfiniteAreaLight().
MIPMap<RGBSpectrum>* InfiniteAreaLight::radianceMap [private] |
Definition at line 58 of file infinite.h.
Referenced by InfiniteAreaLight(), Le(), Power(), Sample_L(), SHProject(), and ~InfiniteAreaLight().