#include <infinite.h>
Public Member Functions | |
InfiniteAreaLight (const Transform &light2world, const RGBColor &l, int ns, const string &texmap, EnvironmentMapping *m, float gain, float gamma) | |
virtual | ~InfiniteAreaLight () |
virtual SWCSpectrum | Power (const TsPack *tspack, const Scene *scene) const |
virtual bool | IsDeltaLight () const |
virtual bool | IsEnvironmental () const |
virtual SWCSpectrum | Le (const TsPack *tspack, const RayDifferential &r) const |
virtual SWCSpectrum | Le (const TsPack *tspack, const Scene *scene, const Ray &r, const Normal &n, BSDF **bsdf, float *pdf, float *pdfDirect) const |
virtual SWCSpectrum | Sample_L (const TsPack *tspack, const Point &p, const Normal &n, float u1, float u2, float u3, Vector *wi, float *pdf, VisibilityTester *visibility) const |
virtual SWCSpectrum | Sample_L (const TsPack *tspack, const Point &p, float u1, float u2, float u3, Vector *wi, float *pdf, VisibilityTester *visibility) const |
virtual SWCSpectrum | Sample_L (const TsPack *tspack, const Scene *scene, float u1, float u2, float u3, float u4, Ray *ray, float *pdf) const |
virtual float | Pdf (const Point &, const Normal &, const Vector &) const |
virtual float | Pdf (const Point &, const Vector &) const |
virtual float | Pdf (const Point &p, const Normal &n, const Point &po, const Normal &ns) const |
virtual bool | Sample_L (const TsPack *tspack, const Scene *scene, float u1, float u2, float u3, BSDF **bsdf, float *pdf, SWCSpectrum *Le) const |
virtual bool | Sample_L (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 *Le) const |
Static Public Member Functions | |
static Light * | CreateLight (const Transform &light2world, const ParamSet ¶mSet, const TextureParams &tp) |
Private Attributes | |
SPD * | SPDbase |
RGBColor | Lbase |
MIPMap< RGBColor > * | radianceMap |
EnvironmentMapping * | mapping |
Definition at line 35 of file infinite.h.
InfiniteAreaLight::InfiniteAreaLight | ( | const Transform & | light2world, | |
const RGBColor & | l, | |||
int | ns, | |||
const string & | texmap, | |||
EnvironmentMapping * | m, | |||
float | gain, | |||
float | gamma | |||
) |
Definition at line 118 of file infinite.cpp.
References lux::BILINEAR, lux::ReadImage(), and lux::TEXTURE_REPEAT.
Referenced by CreateLight().
InfiniteAreaLight::~InfiniteAreaLight | ( | ) | [virtual] |
Definition at line 112 of file infinite.cpp.
References mapping, radianceMap, and SPDbase.
Light * InfiniteAreaLight::CreateLight | ( | const Transform & | light2world, | |
const ParamSet & | paramSet, | |||
const TextureParams & | tp | |||
) | [static] |
Definition at line 497 of file infinite.cpp.
References lux::ParamSet::FindOneFloat(), lux::ParamSet::FindOneInt(), lux::ParamSet::FindOneRGBColor(), lux::ParamSet::FindOneString(), InfiniteAreaLight(), and lux::Light::nSamples.
virtual bool lux::InfiniteAreaLight::IsDeltaLight | ( | ) | const [inline, virtual] |
Implements lux::Light.
Definition at line 52 of file infinite.h.
virtual bool lux::InfiniteAreaLight::IsEnvironmental | ( | ) | const [inline, virtual] |
Implements lux::Light.
Definition at line 53 of file infinite.h.
SWCSpectrum InfiniteAreaLight::Le | ( | const TsPack * | tspack, | |
const Scene * | scene, | |||
const Ray & | r, | |||
const Normal & | n, | |||
BSDF ** | bsdf, | |||
float * | pdf, | |||
float * | pdfDirect | |||
) | const [virtual] |
Reimplemented from lux::Light.
Definition at line 160 of file infinite.cpp.
References lux::AbsDot(), lux::BBox::BoundingSphere(), BSDF_ALLOC, lux::CoordinateSystem(), lux::Ray::d, lux::Intersection::dg, lux::DistanceSquared(), lux::Dot(), lux::RandomGenerator::floatValue(), lux::Light::havePortalShape, INV_TWOPI, Le(), lux::Vector::LengthSquared(), M_PI, lux::Ray::mint, lux::DifferentialGeometry::nn, lux::Normalize(), lux::Light::nrPortalShapes, lux::Ray::o, lux::DifferentialGeometry::p, lux::Light::PortalShapes, lux::TsPack::rng, lux::TsPack::time, lux::DifferentialGeometry::time, lux::Scene::WorldBound(), and lux::Light::WorldToLight.
SWCSpectrum InfiniteAreaLight::Le | ( | const TsPack * | tspack, | |
const RayDifferential & | r | |||
) | const [virtual] |
Reimplemented from lux::Light.
Definition at line 144 of file infinite.cpp.
References lux::Ray::d, Lbase, lux::MIPMap< T >::Lookup(), lux::EnvironmentMapping::Map(), mapping, lux::Normalize(), radianceMap, SPDbase, and lux::Light::WorldToLight.
Referenced by InfinitePortalBxDF::f(), InfiniteBxDF::f(), Le(), InfinitePortalBxDF::Sample_f(), and Sample_L().
float InfiniteAreaLight::Pdf | ( | const Point & | p, | |
const Normal & | n, | |||
const Point & | po, | |||
const Normal & | ns | |||
) | const [virtual] |
Implements lux::Light.
Definition at line 262 of file infinite.cpp.
References lux::AbsDot(), lux::Intersection::dg, lux::DistanceSquared(), lux::Dot(), lux::Light::havePortalShape, INV_TWOPI, lux::Vector::LengthSquared(), lux::Ray::mint, lux::DifferentialGeometry::nn, lux::Light::nrPortalShapes, lux::DifferentialGeometry::p, and lux::Light::PortalShapes.
float InfiniteAreaLight::Pdf | ( | const Point & | , | |
const Normal & | n, | |||
const Vector & | wi | |||
) | const [virtual] |
Reimplemented from lux::Light.
Definition at line 258 of file infinite.cpp.
References lux::AbsDot(), and INV_TWOPI.
virtual SWCSpectrum lux::InfiniteAreaLight::Power | ( | const TsPack * | tspack, | |
const Scene * | scene | |||
) | const [inline, virtual] |
Implements lux::Light.
Definition at line 41 of file infinite.h.
References lux::BBox::BoundingSphere(), Lbase, lux::MIPMap< T >::Lookup(), M_PI, radianceMap, SPDbase, and lux::Scene::WorldBound().
bool InfiniteAreaLight::Sample_L | ( | 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 * | Le | |||
) | const [virtual] |
Reimplemented from lux::Light.
Definition at line 419 of file infinite.cpp.
References lux::AbsDot(), lux::BBox::BoundingSphere(), BSDF_ALLOC, lux::ConcentricSampleDisk(), lux::CoordinateSystem(), lux::DistanceSquared(), lux::Dot(), Floor2Int(), lux::Light::havePortalShape, INV_TWOPI, lux::Vector::LengthSquared(), M_PI, cimg_library::cimg::max(), cimg_library::cimg::min(), lux::DifferentialGeometry::nn, lux::Normalize(), lux::Light::nrPortalShapes, lux::DifferentialGeometry::p, lux::Light::PortalShapes, lux::VisibilityTester::SetSegment(), lux::TsPack::time, lux::DifferentialGeometry::time, lux::Scene::WorldBound(), lux::Light::WorldToLight, lux::Vector::x, lux::Vector::y, and lux::Vector::z.
bool InfiniteAreaLight::Sample_L | ( | const TsPack * | tspack, | |
const Scene * | scene, | |||
float | u1, | |||
float | u2, | |||
float | u3, | |||
BSDF ** | bsdf, | |||
float * | pdf, | |||
SWCSpectrum * | Le | |||
) | const [virtual] |
Reimplemented from lux::Light.
Definition at line 365 of file infinite.cpp.
References lux::AbsDot(), lux::BBox::BoundingSphere(), BSDF_ALLOC, lux::CoordinateSystem(), lux::Dot(), lux::DifferentialGeometry::dpdu, lux::DifferentialGeometry::dpdv, Floor2Int(), lux::Light::havePortalShape, INV_TWOPI, M_PI, cimg_library::cimg::min(), lux::DifferentialGeometry::nn, lux::Normalize(), lux::Light::nrPortalShapes, lux::DifferentialGeometry::p, lux::Light::PortalShapes, lux::TsPack::time, lux::DifferentialGeometry::time, lux::UniformSampleHemisphere(), lux::UniformSampleSphere(), lux::Scene::WorldBound(), lux::Light::WorldToLight, lux::Vector::x, lux::Vector::y, and lux::Vector::z.
SWCSpectrum InfiniteAreaLight::Sample_L | ( | const TsPack * | tspack, | |
const Scene * | scene, | |||
float | u1, | |||
float | u2, | |||
float | u3, | |||
float | u4, | |||
Ray * | ray, | |||
float * | ||||
) | const [virtual] |
Implements lux::Light.
Definition at line 324 of file infinite.cpp.
References lux::AbsDot(), lux::BBox::BoundingSphere(), lux::Ray::d, lux::Dot(), lux::RandomGenerator::floatValue(), Floor2Int(), lux::Light::havePortalShape, INV_TWOPI, Le(), M_PI, lux::DifferentialGeometry::nn, lux::Normalize(), lux::Light::nrPortalShapes, lux::Ray::o, lux::DifferentialGeometry::p, lux::Light::PortalShapes, lux::TsPack::rng, lux::TsPack::time, lux::DifferentialGeometry::time, lux::UniformSampleSphere(), and lux::Scene::WorldBound().
SWCSpectrum InfiniteAreaLight::Sample_L | ( | const TsPack * | tspack, | |
const Point & | p, | |||
float | u1, | |||
float | u2, | |||
float | u3, | |||
Vector * | wi, | |||
float * | pdf, | |||
VisibilityTester * | visibility | |||
) | const [virtual] |
Implements lux::Light.
Definition at line 283 of file infinite.cpp.
References lux::Dot(), lux::Light::havePortalShape, Le(), lux::Normalize(), lux::Light::nrPortalShapes, lux::Light::PortalShapes, lux::VisibilityTester::SetRay(), lux::TsPack::time, lux::UniformSampleSphere(), and lux::UniformSpherePdf().
SWCSpectrum InfiniteAreaLight::Sample_L | ( | const TsPack * | tspack, | |
const Point & | p, | |||
const Normal & | n, | |||
float | u1, | |||
float | u2, | |||
float | u3, | |||
Vector * | wi, | |||
float * | pdf, | |||
VisibilityTester * | visibility | |||
) | const [virtual] |
Reimplemented from lux::Light.
Definition at line 207 of file infinite.cpp.
References lux::ConcentricSampleDisk(), lux::CoordinateSystem(), lux::Dot(), lux::Light::havePortalShape, INV_TWOPI, Le(), cimg_library::cimg::max(), lux::Normalize(), lux::Light::nrPortalShapes, lux::Light::PortalShapes, lux::VisibilityTester::SetRay(), lux::TsPack::time, lux::Normal::x, lux::Vector::x, lux::Normal::y, lux::Vector::y, lux::Normal::z, and lux::Vector::z.
RGBColor lux::InfiniteAreaLight::Lbase [private] |
Definition at line 76 of file infinite.h.
Definition at line 78 of file infinite.h.
Referenced by Le(), and ~InfiniteAreaLight().
MIPMap<RGBColor>* lux::InfiniteAreaLight::radianceMap [private] |
Definition at line 77 of file infinite.h.
Referenced by Le(), Power(), and ~InfiniteAreaLight().
SPD* lux::InfiniteAreaLight::SPDbase [private] |
Definition at line 75 of file infinite.h.
Referenced by Le(), Power(), and ~InfiniteAreaLight().