#include <irradiancecache.h>
Public Member Functions | |
IrradianceCacheIntegrator (float minwt, float minsp, float maxsp, float maxang, int maxspec, int maxind, int ns) | |
~IrradianceCacheIntegrator () | |
Spectrum | Li (const Scene *scene, const Renderer *renderer, const RayDifferential &ray, const Intersection &isect, const Sample *sample, RNG &rng, MemoryArena &arena) const |
void | RequestSamples (Sampler *sampler, Sample *sample, const Scene *scene) |
void | Preprocess (const Scene *, const Camera *, const Renderer *) |
Private Member Functions | |
Spectrum | indirectLo (const Point &p, const Normal &ng, float pixelSpacing, const Vector &wo, float rayEpsilon, BSDF *bsdf, BxDFType flags, RNG &rng, const Scene *scene, const Renderer *renderer, MemoryArena &arena) const |
bool | interpolateE (const Scene *scene, const Point &p, const Normal &n, Spectrum *E, Vector *wi) const |
Spectrum | pathL (Ray &r, const Scene *scene, const Renderer *renderer, RNG &rng, MemoryArena &arena) const |
Private Attributes | |
float | minSamplePixelSpacing |
float | maxSamplePixelSpacing |
float | minWeight |
float | cosMaxSampleAngleDifference |
int | nSamples |
int | maxSpecularDepth |
int | maxIndirectDepth |
RWMutex * | mutex |
LightSampleOffsets * | lightSampleOffsets |
BSDFSampleOffsets * | bsdfSampleOffsets |
Octree< IrradianceSample * > * | octree |
Definition at line 41 of file irradiancecache.h.
IrradianceCacheIntegrator::IrradianceCacheIntegrator | ( | float | minwt, | |
float | minsp, | |||
float | maxsp, | |||
float | maxang, | |||
int | maxspec, | |||
int | maxind, | |||
int | ns | |||
) | [inline] |
Definition at line 44 of file irradiancecache.h.
References bsdfSampleOffsets, cosMaxSampleAngleDifference, RWMutex::Create(), Degrees(), lightSampleOffsets, maxIndirectDepth, maxSamplePixelSpacing, maxSpecularDepth, minSamplePixelSpacing, minWeight, mutex, and nSamples.
IrradianceCacheIntegrator::~IrradianceCacheIntegrator | ( | ) |
Definition at line 158 of file irradiancecache.cpp.
References bsdfSampleOffsets, RWMutex::Destroy(), lightSampleOffsets, mutex, and octree.
Spectrum IrradianceCacheIntegrator::indirectLo | ( | const Point & | p, | |
const Normal & | ng, | |||
float | pixelSpacing, | |||
const Vector & | wo, | |||
float | rayEpsilon, | |||
BSDF * | bsdf, | |||
BxDFType | flags, | |||
RNG & | rng, | |||
const Scene * | scene, | |||
const Renderer * | renderer, | |||
MemoryArena & | arena | |||
) | const [private] |
Definition at line 230 of file irradiancecache.cpp.
References Octree< NodeData >::Add(), Clamp(), CosineSampleHemisphere(), BBox::Expand(), BSDF::f(), Faceforward(), INFINITY, interpolateE(), Vector::LengthSquared(), BSDF::LocalToWorld(), M_PI, maxSamplePixelSpacing, minSamplePixelSpacing, mutex, Normalize(), nSamples, BSDF::NumComponents(), octree, pathL(), RNG::RandomUInt(), Sample02(), WRITE, and RGBSpectrum::y().
Referenced by Li().
bool IrradianceCacheIntegrator::interpolateE | ( | const Scene * | scene, | |
const Point & | p, | |||
const Normal & | n, | |||
Spectrum * | E, | |||
Vector * | wi | |||
) | const [private] |
Definition at line 290 of file irradiancecache.cpp.
References cosMaxSampleAngleDifference, IrradProcess::GetAverageDirection(), IrradProcess::GetIrradiance(), Octree< NodeData >::Lookup(), minWeight, mutex, IrradProcess::nFound, octree, READ, and IrradProcess::Successful().
Referenced by indirectLo().
Spectrum IrradianceCacheIntegrator::Li | ( | const Scene * | scene, | |
const Renderer * | renderer, | |||
const RayDifferential & | ray, | |||
const Intersection & | isect, | |||
const Sample * | sample, | |||
RNG & | rng, | |||
MemoryArena & | arena | |||
) | const [virtual] |
Implements SurfaceIntegrator.
Definition at line 189 of file irradiancecache.cpp.
References BSDF_DIFFUSE, BSDF_GLOSSY, BSDF_REFLECTION, BSDF_TRANSMISSION, bsdfSampleOffsets, Cross(), Ray::d, Ray::depth, Intersection::dg, BSDF::dgShading, DifferentialGeometry::dpdx, DifferentialGeometry::dpdy, Faceforward(), Intersection::GetBSDF(), indirectLo(), Intersection::Le(), Vector::Length(), lightSampleOffsets, maxSpecularDepth, DifferentialGeometry::nn, DifferentialGeometry::p, Intersection::rayEpsilon, SpecularReflect(), SpecularTransmit(), Ray::time, and UniformSampleAllLights().
Referenced by IrradiancePrimeTask::Run().
Spectrum IrradianceCacheIntegrator::pathL | ( | Ray & | r, | |
const Scene * | scene, | |||
const Renderer * | renderer, | |||
RNG & | rng, | |||
MemoryArena & | arena | |||
) | const [private] |
Definition at line 325 of file irradiancecache.cpp.
References AbsDot(), BSDF_ALL, BSDF_SPECULAR, Ray::d, BSDF::dgShading, Intersection::GetBSDF(), Scene::Intersect(), CoefficientSpectrum< nSamples >::IsBlack(), Intersection::Le(), maxIndirectDepth, Ray::maxt, DifferentialGeometry::nn, DifferentialGeometry::p, RNG::RandomFloat(), Intersection::rayEpsilon, BSDF::Sample_f(), Ray::time, Renderer::Transmittance(), UniformSampleOneLight(), and RGBSpectrum::y().
Referenced by indirectLo().
void IrradianceCacheIntegrator::Preprocess | ( | const Scene * | scene, | |
const Camera * | camera, | |||
const Renderer * | renderer | |||
) | [virtual] |
Reimplemented from Integrator.
Definition at line 127 of file irradiancecache.cpp.
References ProgressReporter::Done(), EnqueueTasks(), Camera::film, Film::GetSampleExtent(), minWeight, octree, BBox::pMax, BBox::pMin, Camera::shutterClose, Camera::shutterOpen, WaitForAllTasks(), and Scene::WorldBound().
void IrradianceCacheIntegrator::RequestSamples | ( | Sampler * | sampler, | |
Sample * | sample, | |||
const Scene * | scene | |||
) | [virtual] |
Reimplemented from Integrator.
Definition at line 110 of file irradiancecache.cpp.
References bsdfSampleOffsets, Scene::lights, lightSampleOffsets, Light::nSamples, nSamples, and Sampler::RoundSize().
Definition at line 72 of file irradiancecache.h.
Referenced by IrradianceCacheIntegrator(), Li(), RequestSamples(), and ~IrradianceCacheIntegrator().
float IrradianceCacheIntegrator::cosMaxSampleAngleDifference [private] |
Definition at line 66 of file irradiancecache.h.
Referenced by interpolateE(), and IrradianceCacheIntegrator().
Definition at line 71 of file irradiancecache.h.
Referenced by IrradianceCacheIntegrator(), Li(), RequestSamples(), and ~IrradianceCacheIntegrator().
int IrradianceCacheIntegrator::maxIndirectDepth [private] |
Definition at line 67 of file irradiancecache.h.
Referenced by IrradianceCacheIntegrator(), and pathL().
float IrradianceCacheIntegrator::maxSamplePixelSpacing [private] |
Definition at line 65 of file irradiancecache.h.
Referenced by indirectLo(), and IrradianceCacheIntegrator().
int IrradianceCacheIntegrator::maxSpecularDepth [private] |
Definition at line 67 of file irradiancecache.h.
Referenced by IrradianceCacheIntegrator(), and Li().
float IrradianceCacheIntegrator::minSamplePixelSpacing [private] |
Definition at line 65 of file irradiancecache.h.
Referenced by indirectLo(), and IrradianceCacheIntegrator().
float IrradianceCacheIntegrator::minWeight [private] |
Definition at line 66 of file irradiancecache.h.
Referenced by interpolateE(), IrradianceCacheIntegrator(), and Preprocess().
RWMutex* IrradianceCacheIntegrator::mutex [mutable, private] |
Definition at line 68 of file irradiancecache.h.
Referenced by indirectLo(), interpolateE(), IrradianceCacheIntegrator(), and ~IrradianceCacheIntegrator().
int IrradianceCacheIntegrator::nSamples [private] |
Definition at line 67 of file irradiancecache.h.
Referenced by indirectLo(), IrradianceCacheIntegrator(), and RequestSamples().
Octree<IrradianceSample *>* IrradianceCacheIntegrator::octree [mutable, private] |
Definition at line 73 of file irradiancecache.h.
Referenced by indirectLo(), interpolateE(), Preprocess(), and ~IrradianceCacheIntegrator().