#include <irradiancecache.h>
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 *) |
| virtual IrradianceCache * | clone () const |
| IntegrationSampler * | HasIntegrationSampler (IntegrationSampler *is) |
Static Public Member Functions | |
| static SurfaceIntegrator * | CreateSurfaceIntegrator (const ParamSet ¶ms) |
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 37 of file irradiancecache.h.
| IrradianceCache::IrradianceCache | ( | int | maxspec, | |
| int | maxind, | |||
| float | maxerr, | |||
| int | nsamples | |||
| ) |
Definition at line 34 of file irradiancecache.cpp.
References maxError, maxIndirectDepth, maxSpecularDepth, nSamples, and specularDepth.
Referenced by clone(), and CreateSurfaceIntegrator().
| IrradianceCache::~IrradianceCache | ( | ) |
Definition at line 257 of file irradiancecache.cpp.
References octree.
| IrradianceCache * IrradianceCache::clone | ( | ) | const [virtual] |
Definition at line 29 of file irradiancecache.cpp.
References IrradianceCache().
| SurfaceIntegrator * IrradianceCache::CreateSurfaceIntegrator | ( | const ParamSet & | params | ) | [static] |
Definition at line 300 of file irradiancecache.cpp.
References lux::ParamSet::FindOneFloat(), lux::ParamSet::FindOneInt(), IrradianceCache(), maxError, maxIndirectDepth, maxSpecularDepth, and nSamples.
| IntegrationSampler* lux::IrradianceCache::HasIntegrationSampler | ( | IntegrationSampler * | is | ) | [inline] |
Definition at line 46 of file irradiancecache.h.
| 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 155 of file irradiancecache.cpp.
References lux::AbsDot(), lux::Octree< NodeData, LookupProc >::Add(), lux::Spectrum::Black(), lux::BSDF_ALL, lux::BSDF_SPECULAR, Clamp(), lux::CosineSampleHemisphere(), lux::Ray::d, lux::BSDF::dgShading, lux::Dot(), lux::BBox::Expand(), lux::random::floatValue(), lux::Intersection::GetBSDF(), InterpolateIrradiance(), lux::Scene::Intersect(), INV_PI, lux::Intersection::Le(), lux::BSDF::LocalToWorld(), M_PI, maxError, maxIndirectDepth, lux::Ray::maxt, lux::DifferentialGeometry::nn, nSamples, lux::BSDF::NumComponents(), octree, lux::DifferentialGeometry::p, lux::BSDF::rho(), lux::Sample02(), lux::BSDF::Sample_f(), lux::Scene::Transmittance(), lux::random::uintValue(), lux::UniformSampleOneLight(), lux::BBox::Volume(), and lux::Scene::WorldBound().
Referenced by Li().
| bool IrradianceCache::InterpolateIrradiance | ( | const Scene * | scene, | |
| const Point & | p, | |||
| const Normal & | n, | |||
| Spectrum * | E | |||
| ) | const [private] |
Definition at line 261 of file irradiancecache.cpp.
References lux::IrradProcess::GetIrradiance(), lux::Octree< NodeData, LookupProc >::Lookup(), maxError, octree, and lux::IrradProcess::Successful().
Referenced by IndirectLo().
| Spectrum IrradianceCache::Li | ( | const Scene * | scene, | |
| const RayDifferential & | ray, | |||
| const Sample * | sample, | |||
| float * | alpha | |||
| ) | const [virtual] |
Implements lux::Integrator.
Definition at line 59 of file irradiancecache.cpp.
References lux::AbsDot(), lux::Spectrum::Black(), lux::BSDF_DIFFUSE, lux::BSDF_GLOSSY, lux::BSDF_REFLECTION, lux::BSDF_SPECULAR, lux::BSDF_TRANSMISSION, bsdfComponentOffset, bsdfSampleOffset, lux::Ray::d, lux::Intersection::dg, lux::BSDF::dgShading, lux::DifferentialGeometry::dndu, lux::DifferentialGeometry::dndv, lux::Dot(), lux::DifferentialGeometry::dpdx, lux::DifferentialGeometry::dpdy, lux::DifferentialGeometry::dudx, lux::DifferentialGeometry::dudy, lux::DifferentialGeometry::dvdx, lux::DifferentialGeometry::dvdy, lux::BSDF::eta, lux::Intersection::GetBSDF(), lux::RayDifferential::hasDifferentials, IndirectLo(), lux::Scene::Intersect(), lux::Intersection::Le(), lux::Scene::Li(), lux::Scene::lights, lightSampleOffset, maxSpecularDepth, lux::DifferentialGeometry::nn, lux::Ray::o, lux::DifferentialGeometry::p, blender::p, lux::RayDifferential::rx, lux::RayDifferential::ry, lux::BSDF::Sample_f(), specularDepth, and lux::UniformSampleAllLights().
| void IrradianceCache::Preprocess | ( | const Scene * | scene | ) | [virtual] |
Reimplemented from lux::Integrator.
Definition at line 250 of file irradiancecache.cpp.
References octree, lux::BBox::pMax, lux::BBox::pMin, and lux::Scene::WorldBound().
Reimplemented from lux::Integrator.
Definition at line 42 of file irradiancecache.cpp.
References lux::Sample::Add1D(), lux::Sample::Add2D(), bsdfComponentOffset, bsdfSampleOffset, lightNumOffset, lux::Scene::lights, lightSampleOffset, lux::Light::nSamples, lux::Sampler::RoundSize(), and lux::Scene::sampler.
int * lux::IrradianceCache::bsdfComponentOffset [private] |
Definition at line 56 of file irradiancecache.h.
Referenced by Li(), and RequestSamples().
int* lux::IrradianceCache::bsdfSampleOffset [private] |
Definition at line 56 of file irradiancecache.h.
Referenced by Li(), and RequestSamples().
int lux::IrradianceCache::lightNumOffset [private] |
Definition at line 55 of file irradiancecache.h.
Referenced by RequestSamples().
int* lux::IrradianceCache::lightSampleOffset [private] |
Definition at line 55 of file irradiancecache.h.
Referenced by Li(), and RequestSamples().
float lux::IrradianceCache::maxError [private] |
Definition at line 50 of file irradiancecache.h.
Referenced by CreateSurfaceIntegrator(), IndirectLo(), InterpolateIrradiance(), and IrradianceCache().
int lux::IrradianceCache::maxIndirectDepth [private] |
Definition at line 52 of file irradiancecache.h.
Referenced by CreateSurfaceIntegrator(), IndirectLo(), and IrradianceCache().
int lux::IrradianceCache::maxSpecularDepth [private] |
Definition at line 52 of file irradiancecache.h.
Referenced by CreateSurfaceIntegrator(), IrradianceCache(), and Li().
int lux::IrradianceCache::nSamples [private] |
Definition at line 51 of file irradiancecache.h.
Referenced by CreateSurfaceIntegrator(), IndirectLo(), and IrradianceCache().
Octree<IrradianceSample, IrradProcess>* lux::IrradianceCache::octree [mutable, private] |
Definition at line 57 of file irradiancecache.h.
Referenced by IndirectLo(), InterpolateIrradiance(), Preprocess(), and ~IrradianceCache().
int lux::IrradianceCache::specularDepth [mutable, private] |
Definition at line 53 of file irradiancecache.h.
Referenced by IrradianceCache(), and Li().
1.6.1