#include <light.h>
Public Member Functions | |
virtual | ~Light () |
Light (const Transform &l2w, int ns=1) | |
virtual Spectrum | Sample_L (const Point &p, float pEpsilon, const LightSample &ls, float time, Vector *wi, float *pdf, VisibilityTester *vis) const =0 |
virtual Spectrum | Power (const Scene *) const =0 |
virtual bool | IsDeltaLight () const =0 |
virtual Spectrum | Le (const RayDifferential &r) const |
virtual float | Pdf (const Point &p, const Vector &wi) const =0 |
virtual Spectrum | Sample_L (const Scene *scene, const LightSample &ls, float u1, float u2, float time, Ray *ray, Normal *Ns, float *pdf) const =0 |
virtual void | SHProject (const Point &p, float pEpsilon, int lmax, const Scene *scene, bool computeLightVisibility, float time, RNG &rng, Spectrum *coeffs) const |
Public Attributes | |
const int | nSamples |
Protected Attributes | |
const Transform | LightToWorld |
const Transform | WorldToLight |
Definition at line 40 of file light.h.
Light::Light | ( | const Transform & | l2w, | |
int | ns = 1 | |||
) | [inline] |
Definition at line 44 of file light.h.
References Transform::HasScale(), Warning(), and WorldToLight.
virtual bool Light::IsDeltaLight | ( | ) | const [pure virtual] |
Implemented in DiffuseAreaLight, DistantLight, GonioPhotometricLight, InfiniteAreaLight, PointLight, ProjectionLight, and SpotLight.
Referenced by EstimateDirect().
Spectrum Light::Le | ( | const RayDifferential & | r | ) | const [virtual] |
Reimplemented in InfiniteAreaLight.
Definition at line 51 of file light.cpp.
Referenced by EstimateDirect().
Implemented in DiffuseAreaLight, DistantLight, GonioPhotometricLight, InfiniteAreaLight, PointLight, ProjectionLight, and SpotLight.
Referenced by EstimateDirect().
Implemented in DiffuseAreaLight, DistantLight, GonioPhotometricLight, InfiniteAreaLight, PointLight, ProjectionLight, and SpotLight.
virtual Spectrum Light::Sample_L | ( | const Scene * | scene, | |
const LightSample & | ls, | |||
float | u1, | |||
float | u2, | |||
float | time, | |||
Ray * | ray, | |||
Normal * | Ns, | |||
float * | ||||
) | const [pure virtual] |
Implemented in DiffuseAreaLight, DistantLight, GonioPhotometricLight, InfiniteAreaLight, PointLight, ProjectionLight, and SpotLight.
virtual Spectrum Light::Sample_L | ( | const Point & | p, | |
float | pEpsilon, | |||
const LightSample & | ls, | |||
float | time, | |||
Vector * | wi, | |||
float * | pdf, | |||
VisibilityTester * | vis | |||
) | const [pure virtual] |
Implemented in DiffuseAreaLight, DistantLight, GonioPhotometricLight, InfiniteAreaLight, PointLight, ProjectionLight, and SpotLight.
Referenced by EstimateDirect(), SingleScatteringIntegrator::Li(), MetropolisRenderer::PathL(), IGIIntegrator::Preprocess(), DipoleSubsurfaceIntegrator::Preprocess(), PhotonShootingTask::Run(), and SHProject().
void Light::SHProject | ( | const Point & | p, | |
float | pEpsilon, | |||
int | lmax, | |||
const Scene * | scene, | |||
bool | computeLightVisibility, | |||
float | time, | |||
RNG & | rng, | |||
Spectrum * | coeffs | |||
) | const [virtual] |
Reimplemented in InfiniteAreaLight, and PointLight.
Definition at line 76 of file light.cpp.
References ALLOCA, CoefficientSpectrum< nSamples >::IsBlack(), nSamples, RNG::RandomUInt(), RoundUpPow2(), Sample02(), Sample_L(), SHEvaluate(), SHTerms(), VisibilityTester::Unoccluded(), and VanDerCorput().
Referenced by SHProjectIncidentDirectRadiance().
const Transform Light::LightToWorld [protected] |
Definition at line 73 of file light.h.
Referenced by DistantLight::DistantLight(), GonioPhotometricLight::GonioPhotometricLight(), PointLight::PointLight(), ProjectionLight::ProjectionLight(), SpotLight::Sample_L(), ProjectionLight::Sample_L(), InfiniteAreaLight::Sample_L(), InfiniteAreaLight::SHProject(), and SpotLight::SpotLight().
const int Light::nSamples |
Definition at line 70 of file light.h.
Referenced by DipoleSubsurfaceIntegrator::Preprocess(), UseRadianceProbes::RequestSamples(), PhotonIntegrator::RequestSamples(), IrradianceCacheIntegrator::RequestSamples(), IGIIntegrator::RequestSamples(), DirectLightingIntegrator::RequestSamples(), DipoleSubsurfaceIntegrator::RequestSamples(), and SHProject().
const Transform Light::WorldToLight [protected] |
Definition at line 73 of file light.h.
Referenced by SpotLight::Falloff(), InfiniteAreaLight::Le(), Light(), InfiniteAreaLight::Pdf(), ProjectionLight::Projection(), and GonioPhotometricLight::Scale().