Public Member Functions | |
IrradianceCache (int maxspec, int maxind, float maxerr, int nsamples) | |
~IrradianceCache () | |
Spectrum | Li (const Scene *scene, const RayDifferential &ray, const Sample *sample, float *alpha) const |
void | RequestSamples (Sample *sample, const Scene *scene) |
void | Preprocess (const Scene *) |
Private Member Functions | |
Spectrum | IndirectLo (const Point &p, const Normal &n, const Vector &wo, BSDF *bsdf, BxDFType flags, const Sample *sample, const Scene *scene) const |
bool | InterpolateIrradiance (const Scene *scene, const Point &p, const Normal &n, Spectrum *E) const |
Private Attributes | |
float | maxError |
int | nSamples |
int | maxSpecularDepth |
int | maxIndirectDepth |
int | specularDepth |
int * | lightSampleOffset |
int | lightNumOffset |
int * | bsdfSampleOffset |
int * | bsdfComponentOffset |
Octree< IrradianceSample, IrradProcess > * | octree |
Definition at line 34 of file irradiancecache.cpp.
IrradianceCache::IrradianceCache | ( | int | maxspec, | |
int | maxind, | |||
float | maxerr, | |||
int | nsamples | |||
) |
Definition at line 92 of file irradiancecache.cpp.
References maxError, maxIndirectDepth, maxSpecularDepth, nSamples, and specularDepth.
IrradianceCache::~IrradianceCache | ( | ) |
Spectrum IrradianceCache::Li | ( | const Scene * | scene, | |
const RayDifferential & | ray, | |||
const Sample * | sample, | |||
float * | alpha | |||
) | const [virtual] |
Implements Integrator.
Definition at line 117 of file irradiancecache.cpp.
References AbsDot(), Spectrum::Black(), BSDF_DIFFUSE, BSDF_GLOSSY, BSDF_REFLECTION, BSDF_SPECULAR, BSDF_TRANSMISSION, bsdfComponentOffset, bsdfSampleOffset, Ray::d, Intersection::dg, BSDF::dgShading, DifferentialGeometry::dndu, DifferentialGeometry::dndv, Dot(), DifferentialGeometry::dpdx, DifferentialGeometry::dpdy, DifferentialGeometry::dudx, DifferentialGeometry::dudy, DifferentialGeometry::dvdx, DifferentialGeometry::dvdy, BSDF::eta, Intersection::GetBSDF(), RayDifferential::hasDifferentials, IndirectLo(), Scene::Intersect(), Intersection::Le(), Scene::Li(), Scene::lights, lightSampleOffset, maxSpecularDepth, DifferentialGeometry::nn, Ray::o, DifferentialGeometry::p, RayDifferential::rx, RayDifferential::ry, BSDF::Sample_f(), specularDepth, and UniformSampleAllLights().
Reimplemented from Integrator.
Definition at line 100 of file irradiancecache.cpp.
References Sample::Add1D(), Sample::Add2D(), bsdfComponentOffset, bsdfSampleOffset, lightNumOffset, Scene::lights, lightSampleOffset, Light::nSamples, Sampler::RoundSize(), and Scene::sampler.
void IrradianceCache::Preprocess | ( | const Scene * | scene | ) | [virtual] |
Reimplemented from Integrator.
Definition at line 310 of file irradiancecache.cpp.
References octree, BBox::pMax, BBox::pMin, and Scene::WorldBound().
Spectrum IrradianceCache::IndirectLo | ( | const Point & | p, | |
const Normal & | n, | |||
const Vector & | wo, | |||
BSDF * | bsdf, | |||
BxDFType | flags, | |||
const Sample * | sample, | |||
const Scene * | scene | |||
) | const [private] |
Definition at line 213 of file irradiancecache.cpp.
References AbsDot(), Octree< NodeData, LookupProc >::Add(), Spectrum::Black(), BSDF_ALL, BSDF_SPECULAR, Clamp(), CosineSampleHemisphere(), Ray::d, BSDF::dgShading, Dot(), BBox::Expand(), Intersection::GetBSDF(), InterpolateIrradiance(), Scene::Intersect(), Intersection::Le(), BSDF::LocalToWorld(), M_PI, maxError, maxIndirectDepth, Ray::maxt, DifferentialGeometry::nn, nSamples, BSDF::NumComponents(), octree, DifferentialGeometry::p, RandomFloat(), RandomUInt(), BSDF::rho(), Sample02(), BSDF::Sample_f(), Scene::Transmittance(), UniformSampleOneLight(), BBox::Volume(), and Scene::WorldBound().
Referenced by Li().
bool IrradianceCache::InterpolateIrradiance | ( | const Scene * | scene, | |
const Point & | p, | |||
const Normal & | n, | |||
Spectrum * | E | |||
) | const [private] |
Definition at line 321 of file irradiancecache.cpp.
References StatsRatio::Add(), StatsPercentage::Add(), IrradProcess::GetIrradiance(), Octree< NodeData, LookupProc >::Lookup(), maxError, IrradProcess::nFound, octree, IrradProcess::samplesChecked, and IrradProcess::Successful().
Referenced by IndirectLo().
float IrradianceCache::maxError [private] |
Definition at line 44 of file irradiancecache.cpp.
Referenced by IndirectLo(), InterpolateIrradiance(), and IrradianceCache().
int IrradianceCache::nSamples [private] |
Definition at line 45 of file irradiancecache.cpp.
Referenced by IndirectLo(), and IrradianceCache().
int IrradianceCache::maxSpecularDepth [private] |
int IrradianceCache::maxIndirectDepth [private] |
Definition at line 46 of file irradiancecache.cpp.
Referenced by IndirectLo(), and IrradianceCache().
int IrradianceCache::specularDepth [mutable, private] |
int* IrradianceCache::lightSampleOffset [private] |
int IrradianceCache::lightNumOffset [private] |
int* IrradianceCache::bsdfSampleOffset [private] |
int * IrradianceCache::bsdfComponentOffset [private] |
Octree<IrradianceSample, IrradProcess>* IrradianceCache::octree [mutable, private] |
Definition at line 51 of file irradiancecache.cpp.
Referenced by IndirectLo(), InterpolateIrradiance(), Preprocess(), and ~IrradianceCache().