lux::BidirIntegrator Class Reference

#include <bidirectional.h>

Inheritance diagram for lux::BidirIntegrator:

lux::SurfaceIntegrator lux::SurfaceIntegrator lux::Integrator lux::Integrator

List of all members.

Public Types

enum  LightStrategy { SAMPLE_ALL_UNIFORM, SAMPLE_ONE_UNIFORM, SAMPLE_AUTOMATIC }

Public Member Functions

 BidirIntegrator (int ed, int ld, LightStrategy ls)
SWCSpectrum Li (const Scene *scene, const RayDifferential &ray, const Sample *sample, float *alpha) const
void RequestSamples (Sample *sample, const Scene *scene)
Spectrum Li (const Scene *scene, const RayDifferential &ray, const Sample *sample, float *alpha) const
void RequestSamples (Sample *sample, const Scene *scene)
virtual BidirIntegratorclone () const
IntegrationSampler * HasIntegrationSampler (IntegrationSampler *is)

Static Public Member Functions

static SurfaceIntegratorCreateSurfaceIntegrator (const ParamSet &params)
static SurfaceIntegratorCreateSurfaceIntegrator (const ParamSet &params)

Private Member Functions

int generatePath (const Scene *scene, const Ray &r, const Sample *sample, int sampleOffset, vector< BidirVertex > &vertices) const
float weightPath (vector< BidirVertex > &eye, int nEye, vector< BidirVertex > &light, int nLight, float pdfLight, bool directLight) const
SWCSpectrum evalPath (const Scene *scene, vector< BidirVertex > &eye, int nEye, vector< BidirVertex > &light, int nLight) const
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)
static float G (const BidirVertex &v0, const BidirVertex &v1)
static bool visible (const Scene *scene, const Point &P0, const Point &P1)

Private Attributes

LightStrategy lightStrategy
int maxEyeDepth
int maxLightDepth
int lightNumOffset
int lightPosOffset
int lightDirOffset
int sampleEyeOffset
int sampleLightOffset
int sampleDirectOffset
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]


Detailed Description

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


Member Enumeration Documentation

Enumerator:
SAMPLE_ALL_UNIFORM 
SAMPLE_ONE_UNIFORM 
SAMPLE_AUTOMATIC 

Definition at line 38 of file integrators/bidirectional.h.


Constructor & Destructor Documentation

lux::BidirIntegrator::BidirIntegrator ( int  ed,
int  ld,
LightStrategy  ls 
) [inline]

Definition at line 43 of file integrators/bidirectional.h.

Referenced by clone(), and CreateSurfaceIntegrator().


Member Function Documentation

BidirIntegrator * BidirIntegrator::clone (  )  const [virtual]

Definition at line 29 of file pbrtattic/integrators/bidirectional.cpp.

References BidirIntegrator().

static SurfaceIntegrator* lux::BidirIntegrator::CreateSurfaceIntegrator ( const ParamSet params  )  [static]

SurfaceIntegrator * BidirIntegrator::CreateSurfaceIntegrator ( const ParamSet params  )  [static]

Spectrum BidirIntegrator::evalPath ( const Scene scene,
BidirVertex eye,
int  nEye,
BidirVertex light,
int  nLight 
) const [private]

SWCSpectrum BidirIntegrator::evalPath ( const Scene scene,
vector< BidirVertex > &  eye,
int  nEye,
vector< BidirVertex > &  light,
int  nLight 
) const [private]

static float lux::BidirIntegrator::G ( const BidirVertex v0,
const BidirVertex v1 
) [static, private]

float BidirIntegrator::G ( const BidirVertex v0,
const BidirVertex v1 
) [static, private]

int BidirIntegrator::generatePath ( const Scene scene,
const Ray r,
const Sample sample,
const int *  bsdfOffset,
const int *  bsdfCompOffset,
BidirVertex vertices,
int  maxVerts 
) const [private]

int BidirIntegrator::generatePath ( const Scene scene,
const Ray r,
const Sample sample,
int  sampleOffset,
vector< BidirVertex > &  vertices 
) const [private]

IntegrationSampler* lux::BidirIntegrator::HasIntegrationSampler ( IntegrationSampler *  is  )  [inline]

Definition at line 40 of file pbrtattic/integrators/bidirectional.h.

Spectrum lux::BidirIntegrator::Li ( const Scene scene,
const RayDifferential ray,
const Sample sample,
float *  alpha 
) const [virtual]

Implements lux::Integrator.

Spectrum BidirIntegrator::Li ( const Scene scene,
const RayDifferential ray,
const Sample sample,
float *  alpha 
) const [virtual]

void lux::BidirIntegrator::RequestSamples ( Sample sample,
const Scene scene 
) [virtual]

Reimplemented from lux::Integrator.

void BidirIntegrator::RequestSamples ( Sample sample,
const Scene scene 
) [virtual]

static bool lux::BidirIntegrator::visible ( const Scene scene,
const Point P0,
const Point P1 
) [static, private]

bool BidirIntegrator::visible ( const Scene scene,
const Point P0,
const Point P1 
) [static, private]

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

References lux::Scene::IntersectP(), and RAY_EPSILON.

Referenced by evalPath().

float BidirIntegrator::weightPath ( BidirVertex eye,
int  nEye,
BidirVertex light,
int  nLight 
) const [private]

Definition at line 145 of file pbrtattic/integrators/bidirectional.cpp.

float BidirIntegrator::weightPath ( vector< BidirVertex > &  eye,
int  nEye,
vector< BidirVertex > &  light,
int  nLight,
float  pdfLight,
bool  directLight 
) const [private]


Member Data Documentation

Definition at line 57 of file pbrtattic/integrators/bidirectional.h.

int lux::BidirIntegrator::directBSDFOffset[MAX_VERTS] [private]

Definition at line 57 of file pbrtattic/integrators/bidirectional.h.

Definition at line 56 of file pbrtattic/integrators/bidirectional.h.

int lux::BidirIntegrator::directLightOffset[MAX_VERTS] [private]

Definition at line 56 of file pbrtattic/integrators/bidirectional.h.

int lux::BidirIntegrator::eyeBSDFCompOffset[MAX_VERTS] [private]

Definition at line 54 of file pbrtattic/integrators/bidirectional.h.

int lux::BidirIntegrator::eyeBSDFOffset[MAX_VERTS] [private]

Definition at line 54 of file pbrtattic/integrators/bidirectional.h.

Definition at line 55 of file pbrtattic/integrators/bidirectional.h.

int lux::BidirIntegrator::lightBSDFOffset[MAX_VERTS] [private]

Definition at line 55 of file pbrtattic/integrators/bidirectional.h.

Definition at line 61 of file integrators/bidirectional.h.

Referenced by Li(), and RequestSamples().

Definition at line 61 of file integrators/bidirectional.h.

Referenced by Li(), and RequestSamples().

Definition at line 61 of file integrators/bidirectional.h.

Referenced by Li(), and RequestSamples().

Definition at line 59 of file integrators/bidirectional.h.

Referenced by Li(), and RequestSamples().

Definition at line 60 of file integrators/bidirectional.h.

Referenced by Li(), RequestSamples(), and weightPath().

Definition at line 60 of file integrators/bidirectional.h.

Referenced by Li(), RequestSamples(), and weightPath().

Definition at line 62 of file integrators/bidirectional.h.

Referenced by Li(), and RequestSamples().

Definition at line 62 of file integrators/bidirectional.h.

Referenced by Li(), and RequestSamples().

Definition at line 62 of file integrators/bidirectional.h.

Referenced by Li(), and RequestSamples().


The documentation for this class was generated from the following files:

Generated on Fri Jul 24 11:50:05 2009 for lux by  doxygen 1.5.9