bidirectional.cpp File Reference

#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"
Include dependency graph for integrators/bidirectional.cpp:

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")

Function Documentation

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]
static float G ( float  cosins,
float  coso,
float  d2 
) [static]
static int generateEyePath ( const TsPack tspack,
const Scene scene,
BSDF bsdf,
const Sample sample,
const BidirIntegrator bidir,
vector< BidirVertex > &  vertices,
float  directWeight 
) [static]
static int generateLightPath ( const TsPack tspack,
const Scene scene,
BSDF bsdf,
const Sample sample,
const BidirIntegrator bidir,
vector< BidirVertex > &  vertices 
) [static]
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]
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]
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]
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().


Variable Documentation

const u_int passThroughLimit = 10000 [static]

Definition at line 35 of file integrators/bidirectional.cpp.

Referenced by generateEyePath(), and generateLightPath().

Generated by  doxygen 1.6.2-20100208