
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] |
1.5.6