montecarlo.h File Reference

#include "pbrt.h"
#include "geometry.h"
#include "rng.h"

Go to the source code of this file.

Classes

struct  Distribution1D
struct  Distribution2D
class  PermutedHalton

Functions

void RejectionSampleDisk (float u1, float u2, float *x, float *y)
Vector UniformSampleHemisphere (float u1, float u2)
float UniformHemispherePdf ()
Vector UniformSampleSphere (float u1, float u2)
float UniformSpherePdf ()
Vector UniformSampleCone (float u1, float u2, float thetamax)
Vector UniformSampleCone (float u1, float u2, float thetamax, const Vector &x, const Vector &y, const Vector &z)
float UniformConePdf (float thetamax)
void UniformSampleDisk (float u1, float u2, float *x, float *y)
void ConcentricSampleDisk (float u1, float u2, float *dx, float *dy)
Vector CosineSampleHemisphere (float u1, float u2)
float CosineHemispherePdf (float costheta, float phi)
void UniformSampleTriangle (float ud1, float ud2, float *u, float *v)
void StratifiedSample1D (float *samples, int nsamples, RNG &rng, bool jitter=true)
void StratifiedSample2D (float *samples, int nx, int ny, RNG &rng, bool jitter=true)
template<typename T >
void Shuffle (T *samp, uint32_t count, uint32_t dims, RNG &rng)
void LatinHypercube (float *samples, uint32_t nSamples, uint32_t nDim, RNG &rng)
double RadicalInverse (int n, int base)
void GeneratePermutation (uint32_t *buf, uint32_t b, RNG &rng)
double PermutedRadicalInverse (uint32_t n, uint32_t base, const uint32_t *p)
float VanDerCorput (uint32_t n, uint32_t scramble=0)
float Sobol2 (uint32_t n, uint32_t scramble=0)
float LarcherPillichshammer2 (uint32_t n, uint32_t scramble=0)
void Sample02 (uint32_t n, const uint32_t scramble[2], float sample[2])
int LDPixelSampleFloatsNeeded (const Sample *sample, int nPixelSamples)
void LDPixelSample (int xPos, int yPos, float shutterOpen, float shutterClose, int nPixelSamples, Sample *samples, float *buf, RNG &rng)
Vector SampleHG (const Vector &w, float g, float u1, float u2)
float HGPdf (const Vector &w, const Vector &wp, float g)
float BalanceHeuristic (int nf, float fPdf, int ng, float gPdf)
float PowerHeuristic (int nf, float fPdf, int ng, float gPdf)
void LDShuffleScrambled1D (int nSamples, int nPixel, float *samples, RNG &rng)
void LDShuffleScrambled2D (int nSamples, int nPixel, float *samples, RNG &rng)

Variables

static const float OneMinusEpsilon = 0x1.fffffep-1

Function Documentation

float BalanceHeuristic ( int  nf,
float  fPdf,
int  ng,
float  gPdf 
) [inline]

Definition at line 243 of file montecarlo.h.

void ConcentricSampleDisk ( float  u1,
float  u2,
float *  dx,
float *  dy 
)
float CosineHemispherePdf ( float  costheta,
float  phi 
) [inline]

Definition at line 122 of file montecarlo.h.

References INV_PI.

Referenced by Gen_CosHemisphere().

Vector CosineSampleHemisphere ( float  u1,
float  u2 
) [inline]
void GeneratePermutation ( uint32_t *  buf,
uint32_t  b,
RNG rng 
) [inline]

Definition at line 185 of file montecarlo.h.

References Shuffle().

Referenced by PermutedHalton::PermutedHalton().

float HGPdf ( const Vector w,
const Vector wp,
float  g 
)

Definition at line 432 of file montecarlo.cpp.

References PhaseHG().

float LarcherPillichshammer2 ( uint32_t  n,
uint32_t  scramble = 0 
) [inline]

Definition at line 283 of file montecarlo.h.

References OneMinusEpsilon.

void LatinHypercube ( float *  samples,
uint32_t  nSamples,
uint32_t  nDim,
RNG rng 
)
void LDPixelSample ( int  xPos,
int  yPos,
float  shutterOpen,
float  shutterClose,
int  nPixelSamples,
Sample samples,
float *  buf,
RNG rng 
)
int LDPixelSampleFloatsNeeded ( const Sample sample,
int  nPixelSamples 
)

Definition at line 182 of file montecarlo.cpp.

References Sample::n1D, and Sample::n2D.

Referenced by LDSampler::GetMoreSamples(), and AdaptiveSampler::GetMoreSamples().

void LDShuffleScrambled1D ( int  nSamples,
int  nPixel,
float *  samples,
RNG rng 
) [inline]
void LDShuffleScrambled2D ( int  nSamples,
int  nPixel,
float *  samples,
RNG rng 
) [inline]
double PermutedRadicalInverse ( uint32_t  n,
uint32_t  base,
const uint32_t *  p 
) [inline]

Definition at line 192 of file montecarlo.h.

Referenced by PermutedHalton::Sample().

float PowerHeuristic ( int  nf,
float  fPdf,
int  ng,
float  gPdf 
) [inline]

Definition at line 248 of file montecarlo.h.

Referenced by EstimateDirect(), and PhotonIntegrator::Li().

double RadicalInverse ( int  n,
int  base 
) [inline]

Definition at line 171 of file montecarlo.h.

Referenced by HaltonSampler::GetMoreSamples(), and CreateRadProbeTask::Run().

void RejectionSampleDisk ( float  u1,
float  u2,
float *  x,
float *  y 
)
void Sample02 ( uint32_t  n,
const uint32_t  scramble[2],
float  sample[2] 
) [inline]
Vector SampleHG ( const Vector w,
float  g,
float  u1,
float  u2 
)

Definition at line 415 of file montecarlo.cpp.

References CoordinateSystem(), M_PI, and SphericalDirection().

template<typename T >
void Shuffle ( T *  samp,
uint32_t  count,
uint32_t  dims,
RNG rng 
) [inline]
float Sobol2 ( uint32_t  n,
uint32_t  scramble = 0 
) [inline]

Definition at line 275 of file montecarlo.h.

References OneMinusEpsilon.

Referenced by Sample02().

void StratifiedSample1D ( float *  samples,
int  nsamples,
RNG rng,
bool  jitter = true 
)

Definition at line 140 of file montecarlo.cpp.

References OneMinusEpsilon, and RNG::RandomFloat().

Referenced by StratifiedSampler::GetMoreSamples().

void StratifiedSample2D ( float *  samples,
int  nx,
int  ny,
RNG rng,
bool  jitter = true 
)

Definition at line 150 of file montecarlo.cpp.

References OneMinusEpsilon, and RNG::RandomFloat().

Referenced by StratifiedSampler::GetMoreSamples(), and BSDF::rho().

float UniformConePdf ( float  thetamax  ) 

Definition at line 392 of file montecarlo.cpp.

References M_PI.

Referenced by PhotonIntegrator::Li(), Sphere::Pdf(), SpotLight::Sample_L(), and ProjectionLight::Sample_L().

float UniformHemispherePdf (  ) 

Definition at line 270 of file montecarlo.cpp.

References INV_TWOPI.

Referenced by Gen_UniformHemisphere().

Vector UniformSampleCone ( float  u1,
float  u2,
float  thetamax,
const Vector x,
const Vector y,
const Vector z 
)

Definition at line 405 of file montecarlo.cpp.

References Lerp(), and M_PI.

Vector UniformSampleCone ( float  u1,
float  u2,
float  thetamax 
)
void UniformSampleDisk ( float  u1,
float  u2,
float *  x,
float *  y 
)

Definition at line 290 of file montecarlo.cpp.

References M_PI.

Vector UniformSampleHemisphere ( float  u1,
float  u2 
)

Definition at line 260 of file montecarlo.cpp.

References M_PI.

Referenced by Gen_UniformHemisphere(), and BxDF::rho().

Vector UniformSampleSphere ( float  u1,
float  u2 
)
void UniformSampleTriangle ( float  ud1,
float  ud2,
float *  u,
float *  v 
)

Definition at line 343 of file montecarlo.cpp.

Referenced by Triangle::Sample().

float UniformSpherePdf (  ) 
float VanDerCorput ( uint32_t  n,
uint32_t  scramble = 0 
) [inline]

Variable Documentation

const float OneMinusEpsilon = 0x1.fffffep-1 [static]
Generated on Sat Aug 28 20:00:12 2010 for pbrt by  doxygen 1.6.3