Public Member Functions | |
Spectrum | Li (const Scene *scene, const RayDifferential &ray, const Sample *sample, float *alpha) const |
void | RequestSamples (Sample *sample, const Scene *scene) |
Private Member Functions | |
int | generatePath (const Scene *scene, const Ray &r, const Sample *sample, const int *bsdfOffset, const int *bsdfCompOffset, BidirVertex *vertices, int maxVerts) const |
float | weightPath (BidirVertex *eye, int nEye, BidirVertex *light, int nLight) const |
Spectrum | evalPath (const Scene *scene, BidirVertex *eye, int nEye, BidirVertex *light, int nLight) const |
Static Private Member Functions | |
static float | G (const BidirVertex &v0, const BidirVertex &v1) |
static bool | visible (const Scene *scene, const Point &P0, const Point &P1) |
Private Attributes | |
int | eyeBSDFOffset [MAX_VERTS] |
int | eyeBSDFCompOffset [MAX_VERTS] |
int | lightBSDFOffset [MAX_VERTS] |
int | lightBSDFCompOffset [MAX_VERTS] |
int | directLightOffset [MAX_VERTS] |
int | directLightNumOffset [MAX_VERTS] |
int | directBSDFOffset [MAX_VERTS] |
int | directBSDFCompOffset [MAX_VERTS] |
int | lightNumOffset |
int | lightPosOffset |
int | lightDirOffset |
Definition at line 31 of file bidirectional.cpp.
Spectrum BidirIntegrator::Li | ( | const Scene * | scene, | |
const RayDifferential & | ray, | |||
const Sample * | sample, | |||
float * | alpha | |||
) | const [virtual] |
Implements Integrator.
Definition at line 80 of file bidirectional.cpp.
References AbsDot(), BidirVertex::bsdf, BidirVertex::bsdfWeight, directBSDFCompOffset, directBSDFOffset, directLightNumOffset, directLightOffset, evalPath(), eyeBSDFCompOffset, eyeBSDFOffset, BSDF::f(), Floor2Int(), generatePath(), lightBSDFCompOffset, lightBSDFOffset, lightDirOffset, lightNumOffset, lightPosOffset, Scene::lights, MAX_VERTS, Sample::oneD, BidirVertex::rrWeight, Sample::twoD, UniformSampleOneLight(), and weightPath().
Reimplemented from Integrator.
Definition at line 65 of file bidirectional.cpp.
References Sample::Add1D(), Sample::Add2D(), directBSDFCompOffset, directBSDFOffset, directLightNumOffset, directLightOffset, eyeBSDFCompOffset, eyeBSDFOffset, lightBSDFCompOffset, lightBSDFOffset, lightDirOffset, lightNumOffset, lightPosOffset, and MAX_VERTS.
int BidirIntegrator::generatePath | ( | const Scene * | scene, | |
const Ray & | r, | |||
const Sample * | sample, | |||
const int * | bsdfOffset, | |||
const int * | bsdfCompOffset, | |||
BidirVertex * | vertices, | |||
int | maxVerts | |||
) | const [private] |
Definition at line 132 of file bidirectional.cpp.
References AbsDot(), Spectrum::Black(), BidirVertex::bsdf, BSDF_ALL, BidirVertex::bsdfWeight, Ray::d, Intersection::dg, BSDF::dgShading, DistanceSquared(), BidirVertex::flags, Intersection::GetBSDF(), Scene::Intersect(), BidirVertex::ng, DifferentialGeometry::nn, BidirVertex::ns, Ray::o, Sample::oneD, DifferentialGeometry::p, BidirVertex::p, RandomFloat(), BidirVertex::rrWeight, BSDF::Sample_f(), Sample::twoD, BidirVertex::wi, and BidirVertex::wo.
Referenced by Li().
float BidirIntegrator::weightPath | ( | BidirVertex * | eye, | |
int | nEye, | |||
BidirVertex * | light, | |||
int | nLight | |||
) | const [private] |
Spectrum BidirIntegrator::evalPath | ( | const Scene * | scene, | |
BidirVertex * | eye, | |||
int | nEye, | |||
BidirVertex * | light, | |||
int | nLight | |||
) | const [private] |
Definition at line 179 of file bidirectional.cpp.
References AbsDot(), Spectrum::Black(), BidirVertex::bsdf, BidirVertex::bsdfWeight, BSDF::f(), G(), BidirVertex::p, BidirVertex::rrWeight, visible(), BidirVertex::wi, and BidirVertex::wo.
Referenced by Li().
float BidirIntegrator::G | ( | const BidirVertex & | v0, | |
const BidirVertex & | v1 | |||
) | [static, private] |
Definition at line 201 of file bidirectional.cpp.
References AbsDot(), DistanceSquared(), BidirVertex::ng, Normalize(), and BidirVertex::p.
Referenced by evalPath().
bool BidirIntegrator::visible | ( | const Scene * | scene, | |
const Point & | P0, | |||
const Point & | P1 | |||
) | [static, private] |
Definition at line 206 of file bidirectional.cpp.
References Scene::IntersectP(), and RAY_EPSILON.
Referenced by evalPath().
int BidirIntegrator::eyeBSDFOffset[MAX_VERTS] [private] |
int BidirIntegrator::eyeBSDFCompOffset[MAX_VERTS] [private] |
int BidirIntegrator::lightBSDFOffset[MAX_VERTS] [private] |
int BidirIntegrator::lightBSDFCompOffset[MAX_VERTS] [private] |
int BidirIntegrator::directLightOffset[MAX_VERTS] [private] |
int BidirIntegrator::directLightNumOffset[MAX_VERTS] [private] |
int BidirIntegrator::directBSDFOffset[MAX_VERTS] [private] |
int BidirIntegrator::directBSDFCompOffset[MAX_VERTS] [private] |
int BidirIntegrator::lightNumOffset [private] |
int BidirIntegrator::lightPosOffset [private] |
int BidirIntegrator::lightDirOffset [private] |