
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().
1.5.6