#include "bidirectional.h"#include "reflection/bxdf.h"#include "light.h"#include "camera.h"#include "sampling.h"#include "scene.h"#include "paramset.h"#include "dynload.h"Go to the source code of this file.
Classes | |
| struct | BidirVertex |
Functions | |
| static int | generateEyePath (const TsPack *tspack, const Scene *scene, BSDF *bsdf, const Sample *sample, const BidirIntegrator &bidir, vector< BidirVertex > &vertices, float directWeight) |
| static int | generateLightPath (const TsPack *tspack, const Scene *scene, BSDF *bsdf, const Sample *sample, const BidirIntegrator &bidir, vector< BidirVertex > &vertices) |
| static float | G (float cosins, float coso, float d2) |
| static bool | visible (const TsPack *tspack, const Scene *scene, const Point &P0, const Point &P1, float *pdf, float *pdfR, SWCSpectrum *f) |
| static float | weightPath (const vector< BidirVertex > &eye, int nEye, int eyeDepth, const vector< BidirVertex > &light, int nLight, int lightDepth, float pdfLightDirect, bool isLightDirect) |
| static bool | evalPath (const TsPack *tspack, const Scene *scene, const BidirIntegrator &bidir, vector< BidirVertex > &eye, int nEye, vector< BidirVertex > &light, int nLight, float pdfLightDirect, bool isLightDirect, float *weight, SWCSpectrum *L) |
| static bool | getLightHit (const TsPack *tspack, const Scene *scene, const BidirIntegrator &bidir, vector< BidirVertex > &eyePath, int length, vector< SWCSpectrum > &Le, vector< float > &weight) |
| static bool | getEnvironmentLight (const TsPack *tspack, const Scene *scene, const BidirIntegrator &bidir, vector< BidirVertex > &eyePath, int length, float directWeight, vector< SWCSpectrum > &Le, vector< float > &weight, int &nrContribs) |
| static bool | getDirectLight (const TsPack *tspack, const Scene *scene, const BidirIntegrator &bidir, vector< BidirVertex > &eyePath, int length, const Light *light, float u0, float u1, float portal, float directWeight, const SWCSpectrum &We, const Sample *sample, vector< SWCSpectrum > &Ld, vector< float > &weight) |
| static bool | getLight (const TsPack *tspack, const Scene *scene, const BidirIntegrator &bidir, vector< BidirVertex > &eyePath, int nEye, vector< BidirVertex > &lightPath, int nLight, float lightDirectPdf, SWCSpectrum *Ll, float *weight) |
Variables | |
| static const u_int | passThroughLimit = 10000 |
| static DynamicLoader::RegisterSurfaceIntegrator < BidirIntegrator > | r ("bidirectional") |
| static bool evalPath | ( | const TsPack * | tspack, | |
| const Scene * | scene, | |||
| const BidirIntegrator & | bidir, | |||
| vector< BidirVertex > & | eye, | |||
| int | nEye, | |||
| vector< BidirVertex > & | light, | |||
| int | nLight, | |||
| float | pdfLightDirect, | |||
| bool | isLightDirect, | |||
| float * | weight, | |||
| SWCSpectrum * | L | |||
| ) | [static] |
Definition at line 412 of file integrators/bidirectional.cpp.
References lux::AbsDot(), lux::SWCSpectrum::Black(), lux::BidirVertex::bsdf, lux::BSDF_SPECULAR, lux::BidirVertex::dAWeight, lux::DistanceSquared(), lux::MachineEpsilon::E(), lux::BidirIntegrator::eyeThreshold, lux::BSDF::f(), lux::BidirVertex::flags, G(), lux::BidirIntegrator::lightThreshold, cimg_library::cimg::max(), lux::BidirIntegrator::maxEyeDepth, lux::BidirIntegrator::maxLightDepth, cimg_library::cimg::min(), lux::BidirVertex::ng, lux::Normalize(), lux::BidirVertex::ns, lux::BidirVertex::p, lux::BSDF::Pdf(), visible(), weightPath(), lux::BidirVertex::wi, and lux::BidirVertex::wo.
Referenced by getDirectLight(), getEnvironmentLight(), getLight(), and getLightHit().
| static float G | ( | float | cosins, | |
| float | coso, | |||
| float | d2 | |||
| ) | [static] |
Definition at line 305 of file integrators/bidirectional.cpp.
Referenced by cimg_library::CImg< T >::blur_anisotropic(), evalPath(), lux::Torus::Intersect(), lux::Sphere::Intersect(), lux::Paraboloid::Intersect(), lux::Hyperboloid::Intersect(), lux::Cylinder::Intersect(), lux::Cone::Intersect(), lux::IGIIntegrator::Li(), and cimg_library::CImg< T >::sharpen().
| static int generateEyePath | ( | const TsPack * | tspack, | |
| const Scene * | scene, | |||
| BSDF * | bsdf, | |||
| const Sample * | sample, | |||
| const BidirIntegrator & | bidir, | |||
| vector< BidirVertex > & | vertices, | |||
| float | directWeight | |||
| ) | [static] |
Definition at line 104 of file integrators/bidirectional.cpp.
References lux::AbsDot(), lux::Intersection::arealight, lux::BidirVertex::bsdf, lux::BSDF_ALL, lux::BSDF_SPECULAR, lux::BSDF_TRANSMISSION, lux::TsPack::camera, lux::Camera::ClampRay(), lux::Ray::d, lux::Intersection::dg, lux::BSDF::dgShading, lux::DistanceSquared(), lux::BidirIntegrator::eyeThreshold, lux::BidirVertex::flags, lux::Intersection::GetBSDF(), lux::Sampler::GetLazyValues(), lux::Light::group, lux::Sample::imageX, lux::Sample::imageY, lux::Scene::Intersect(), lux::Camera::IsLensBased(), lux::Intersection::Le(), lux::Sample::lensU, lux::Sample::lensV, lux::Scene::lights, lux::BidirIntegrator::lightThreshold, cimg_library::cimg::max(), cimg_library::cimg::min(), lux::BidirVertex::ng, lux::DifferentialGeometry::nn, lux::BidirVertex::ns, lux::BidirVertex::p, p, lux::DifferentialGeometry::p, passThroughLimit, lux::BSDF::Pdf(), lux::r, lux::BSDF::Sample_f(), lux::BidirIntegrator::sampleEyeOffset, lux::Sample::sampler, lux::TsPack::time, lux::Ray::time, lux::BidirVertex::wi, and lux::BidirVertex::wo.
Referenced by lux::BidirIntegrator::Li().
| static int generateLightPath | ( | const TsPack * | tspack, | |
| const Scene * | scene, | |||
| BSDF * | bsdf, | |||
| const Sample * | sample, | |||
| const BidirIntegrator & | bidir, | |||
| vector< BidirVertex > & | vertices | |||
| ) | [static] |
Definition at line 214 of file integrators/bidirectional.cpp.
References lux::AbsDot(), lux::BidirVertex::bsdf, lux::BSDF_ALL, lux::BSDF_SPECULAR, lux::BSDF_TRANSMISSION, lux::Ray::d, lux::Intersection::dg, lux::BSDF::dgShading, lux::DistanceSquared(), lux::BidirIntegrator::eyeThreshold, lux::BidirVertex::flags, lux::Intersection::GetBSDF(), lux::Sampler::GetLazyValues(), lux::Scene::Intersect(), lux::BidirIntegrator::lightThreshold, cimg_library::cimg::max(), cimg_library::cimg::min(), lux::BidirVertex::ng, lux::DifferentialGeometry::nn, lux::BidirVertex::ns, p, lux::BidirVertex::p, lux::DifferentialGeometry::p, passThroughLimit, lux::BSDF::Pdf(), lux::BSDF::Sample_f(), lux::BidirIntegrator::sampleLightOffset, lux::Sample::sampler, lux::TsPack::time, lux::Ray::time, lux::BidirVertex::wi, and lux::BidirVertex::wo.
Referenced by lux::BidirIntegrator::Li().
| static bool getDirectLight | ( | const TsPack * | tspack, | |
| const Scene * | scene, | |||
| const BidirIntegrator & | bidir, | |||
| vector< BidirVertex > & | eyePath, | |||
| int | length, | |||
| const Light * | light, | |||
| float | u0, | |||
| float | u1, | |||
| float | portal, | |||
| float | directWeight, | |||
| const SWCSpectrum & | We, | |||
| const Sample * | sample, | |||
| vector< SWCSpectrum > & | Ld, | |||
| vector< float > & | weight | |||
| ) | [static] |
Definition at line 626 of file integrators/bidirectional.cpp.
References lux::AbsDot(), lux::Sample::AddContribution(), lux::BidirVertex::bsdf, lux::TsPack::camera, lux::BidirVertex::dAWeight, lux::BSDF::dgShading, evalPath(), lux::SWCSpectrum::Filter(), lux::Camera::GetSamplePosition(), lux::Light::group, lux::Light::IsDeltaLight(), lux::Light::IsEnvironmental(), lux::BidirIntegrator::lightBufferId, lux::Scene::lights, lux::BidirVertex::ng, lux::DifferentialGeometry::nn, lux::BidirVertex::ns, lux::DifferentialGeometry::p, lux::BidirVertex::p, lux::Light::Sample_L(), lux::SWCSpectrum::ToXYZ(), and lux::BidirVertex::wi.
Referenced by lux::BidirIntegrator::Li().
| static bool getEnvironmentLight | ( | const TsPack * | tspack, | |
| const Scene * | scene, | |||
| const BidirIntegrator & | bidir, | |||
| vector< BidirVertex > & | eyePath, | |||
| int | length, | |||
| float | directWeight, | |||
| vector< SWCSpectrum > & | Le, | |||
| vector< float > & | weight, | |||
| int & | nrContribs | |||
| ) | [static] |
Definition at line 580 of file integrators/bidirectional.cpp.
References lux::AbsDot(), lux::BidirVertex::bsdf, lux::DistanceSquared(), evalPath(), lux::Light::group, lux::Light::IsEnvironmental(), lux::Light::Le(), lux::Scene::lights, lux::BidirVertex::ng, lux::BidirVertex::ns, lux::BidirVertex::p, p, lux::TsPack::time, lux::Ray::time, and lux::BidirVertex::wo.
Referenced by lux::BidirIntegrator::Li().
| static bool getLight | ( | const TsPack * | tspack, | |
| const Scene * | scene, | |||
| const BidirIntegrator & | bidir, | |||
| vector< BidirVertex > & | eyePath, | |||
| int | nEye, | |||
| vector< BidirVertex > & | lightPath, | |||
| int | nLight, | |||
| float | lightDirectPdf, | |||
| SWCSpectrum * | Ll, | |||
| float * | weight | |||
| ) | [static] |
Definition at line 678 of file integrators/bidirectional.cpp.
References evalPath().
Referenced by lux::BidirIntegrator::Li().
| static bool getLightHit | ( | const TsPack * | tspack, | |
| const Scene * | scene, | |||
| const BidirIntegrator & | bidir, | |||
| vector< BidirVertex > & | eyePath, | |||
| int | length, | |||
| vector< SWCSpectrum > & | Le, | |||
| vector< float > & | weight | |||
| ) | [static] |
Definition at line 558 of file integrators/bidirectional.cpp.
References evalPath().
Referenced by lux::BidirIntegrator::Li().
| static bool visible | ( | const TsPack * | tspack, | |
| const Scene * | scene, | |||
| const Point & | P0, | |||
| const Point & | P1, | |||
| float * | pdf, | |||
| float * | pdfR, | |||
| SWCSpectrum * | f | |||
| ) | [static] |
Definition at line 311 of file integrators/bidirectional.cpp.
References lux::VisibilityTester::SetSegment(), lux::VisibilityTester::TestOcclusion(), and lux::TsPack::time.
Referenced by evalPath(), main(), and lux::LuxGuiApp::ProcessCommandLine().
| static float weightPath | ( | const vector< BidirVertex > & | eye, | |
| int | nEye, | |||
| int | eyeDepth, | |||
| const vector< BidirVertex > & | light, | |||
| int | nLight, | |||
| int | lightDepth, | |||
| float | pdfLightDirect, | |||
| bool | isLightDirect | |||
| ) | [static] |
Definition at line 320 of file integrators/bidirectional.cpp.
References lux::BSDF_SPECULAR, cimg_library::cimg::max(), and p.
Referenced by evalPath().
const u_int passThroughLimit = 10000 [static] |
Definition at line 35 of file integrators/bidirectional.cpp.
Referenced by generateEyePath(), and generateLightPath().
DynamicLoader::RegisterSurfaceIntegrator<BidirIntegrator> r("bidirectional") [static] |
1.6.2-20100208