#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.
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::BSDF_ALL, lux::BSDF_SPECULAR, Clamp(), lux::CosineSampleHemisphere(), lux::Ray::d, lux::BSDF::dgShading, lux::Dot(), lux::BBox::Expand(), 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::r, lux::BSDF::rho(), lux::Sample02(), lux::BSDF::Sample_f(), lux::Scene::Transmittance(), 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 |
Definition at line 59 of file irradiancecache.cpp.
References lux::AbsDot(), 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, p, lux::RayDifferential::rx, lux::RayDifferential::ry, lux::BSDF::Sample_f(), specularDepth, and lux::UniformSampleAllLights().
void IrradianceCache::Preprocess | ( | const Scene * | scene | ) |
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().