RenderMan  26.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RixRNG Class Reference

All-inlined interface for generating sample points for use by Monte Carlo integration and multiple-importance sampling. More...

#include <RixRNG.h>

Classes

class  Generator
 
class  ProgressiveSampler
 
struct  SampleCtx
 SampleCtx identifies a sample domain (an index into an arbitrary scheme of sample points). More...
 

Public Types

enum  Scramble : unsigned
 

Public Member Functions

 RixRNG (Generator const *imp, unsigned scaSize=0)
 
 RixRNG (Generator const *imp, unsigned scaSize, SampleCtx *sca)
 
 RixRNG (RixRNG const *parent, unsigned scaSize, SampleCtx *sca)
 
 RixRNG (RixRNG const *parent, SampleCtx *sca, unsigned scaSize)
 
 RixRNG (RixRNG const *parent, SampleCtx *sca, unsigned scaSize, Scramble scramble)
 
 RixRNG (RixRNG const *parent, SampleCtx *sca, unsigned scaSize, Scramble scramble, unsigned nsamps)
 
 RixRNG (RixRNG const *parent, SampleCtx *sca, unsigned scaSize, Scramble scramble, unsigned sampleid, bool doDistrib)
 
RixRNG GetSlice (SampleCtx *sca, unsigned index) const
 
virtual ~RixRNG ()
 
SampleCtxGetSampleCtx (unsigned i)
 
float GenerateSample1D (unsigned i) const
 
RtFloat2 GenerateSample2D (unsigned i) const
 
RtFloat2 GenerateScrambledSample2D (unsigned i) const
 
RtFloat3 GenerateSample3D (unsigned i) const
 
float GenerateSample1D (SampleCtx &c, unsigned i) const
 
RtFloat2 GenerateSample2D (SampleCtx &c, unsigned i) const
 
RtFloat2 GenerateScrambledSample2D (SampleCtx &c, unsigned i) const
 
RtFloat3 GenerateSample3D (SampleCtx &c, unsigned i) const
 
void GenerateSamples1D (float *xis) const
 
void GenerateSamples2D (RtFloat2 *xis) const
 
void GenerateScrambledSamples2D (RtFloat2 *xis) const
 
void GenerateSamples3D (RtFloat3 *xis) const
 
float DrawSample1D (unsigned i) const
 
RtFloat2 DrawSample2D (unsigned i) const
 
RtFloat2 DrawScrambledSample2D (unsigned i) const
 
RtFloat3 DrawSample3D (unsigned i) const
 
float DrawSample1D (const SampleCtx &c, unsigned i) const
 
RtFloat2 DrawSample2D (const SampleCtx &c, unsigned i) const
 
RtFloat2 DrawScrambledSample2D (const SampleCtx &c, unsigned i) const
 
RtFloat3 DrawSample3D (const SampleCtx &c, unsigned i) const
 
void DrawSamples1D (float *xis) const
 
void DrawSamples2D (RtFloat2 *xis) const
 
void DrawSamples3D (RtFloat3 *xis) const
 
void IncrementSampleIds () const
 
SampleCtx NewDomain (unsigned i, Scramble scramble) const
 
SampleCtx NewDomainDistrib (unsigned i, Scramble scramble, unsigned newsampleid) const
 
SampleCtx NewDomainSplit (unsigned i, Scramble scramble, unsigned newnumsamples) const
 
void NewDomains (Scramble scramble) const
 
void NewDomainsDistrib (Scramble scramble, unsigned newsampleid) const
 
void NewDomainsSplit (Scramble scramble, unsigned newnumsamples) const
 
void NewDomains (Scramble scramble, RixRNG *newRng) const
 
void NewDomainsDistrib (Scramble scramble, unsigned newsampleid, RixRNG *newRng) const
 
void NewDomainsSplit (Scramble scramble, unsigned newnumsamples, RixRNG *newRng) const
 

Public Attributes

unsigned numPts
 
SampleCtxsampleCtxArray
 
Generator const * impl
 

Detailed Description

All-inlined interface for generating sample points for use by Monte Carlo integration and multiple-importance sampling.

Samples are distributed within an N-dimension domain characterized by the combination of patternid and sampleid, stratified in a progressive manner. Resulting samples reside within the [0,1)^N region.

The RixRNG class is a wrapper around an array of per-point sample contexts (RixRNG::SampleCtx). There is typically one SampleCtx for each point in a ray shading batch. The RixRNG wrapper class makes it convenient to generate sample points (or new sample domains) for an entire ray shading batch with just a single function call.

Member Enumeration Documentation

enum RixRNG::Scramble : unsigned
strong

Constructor & Destructor Documentation

RixRNG::RixRNG ( Generator const *  imp,
unsigned  scaSize = 0 
)
inline
RixRNG::RixRNG ( Generator const *  imp,
unsigned  scaSize,
SampleCtx sca 
)
inline
RixRNG::RixRNG ( RixRNG const *  parent,
unsigned  scaSize,
SampleCtx sca 
)
inline
RixRNG::RixRNG ( RixRNG const *  parent,
SampleCtx sca,
unsigned  scaSize 
)
inline
RixRNG::RixRNG ( RixRNG const *  parent,
SampleCtx sca,
unsigned  scaSize,
Scramble  scramble 
)
inline

References NewDomains(), and numPts.

RixRNG::RixRNG ( RixRNG const *  parent,
SampleCtx sca,
unsigned  scaSize,
Scramble  scramble,
unsigned  nsamps 
)
inline

References NewDomainsSplit(), and numPts.

RixRNG::RixRNG ( RixRNG const *  parent,
SampleCtx sca,
unsigned  scaSize,
Scramble  scramble,
unsigned  sampleid,
bool  doDistrib 
)
inline
virtual RixRNG::~RixRNG ( )
inlinevirtual

Member Function Documentation

float RixRNG::DrawSample1D ( unsigned  i) const
inline
float RixRNG::DrawSample1D ( const SampleCtx c,
unsigned  i 
) const
inline
RtFloat2 RixRNG::DrawSample2D ( unsigned  i) const
inline
RtFloat2 RixRNG::DrawSample2D ( const SampleCtx c,
unsigned  i 
) const
inline
RtFloat3 RixRNG::DrawSample3D ( unsigned  i) const
inline
RtFloat3 RixRNG::DrawSample3D ( const SampleCtx c,
unsigned  i 
) const
inline
void RixRNG::DrawSamples1D ( float *  xis) const
inline
void RixRNG::DrawSamples2D ( RtFloat2 *  xis) const
inline
void RixRNG::DrawSamples3D ( RtFloat3 *  xis) const
inline
RtFloat2 RixRNG::DrawScrambledSample2D ( unsigned  i) const
inline
RtFloat2 RixRNG::DrawScrambledSample2D ( const SampleCtx c,
unsigned  i 
) const
inline
float RixRNG::GenerateSample1D ( unsigned  i) const
inline
float RixRNG::GenerateSample1D ( SampleCtx c,
unsigned  i 
) const
inline
RtFloat2 RixRNG::GenerateSample2D ( unsigned  i) const
inline
RtFloat2 RixRNG::GenerateSample2D ( SampleCtx c,
unsigned  i 
) const
inline
RtFloat3 RixRNG::GenerateSample3D ( unsigned  i) const
inline
RtFloat3 RixRNG::GenerateSample3D ( SampleCtx c,
unsigned  i 
) const
inline
void RixRNG::GenerateSamples1D ( float *  xis) const
inline
void RixRNG::GenerateSamples2D ( RtFloat2 *  xis) const
inline
void RixRNG::GenerateSamples3D ( RtFloat3 *  xis) const
inline
RtFloat2 RixRNG::GenerateScrambledSample2D ( unsigned  i) const
inline
RtFloat2 RixRNG::GenerateScrambledSample2D ( SampleCtx c,
unsigned  i 
) const
inline
void RixRNG::GenerateScrambledSamples2D ( RtFloat2 *  xis) const
inline
SampleCtx& RixRNG::GetSampleCtx ( unsigned  i)
inline

References sampleCtxArray.

RixRNG RixRNG::GetSlice ( SampleCtx sca,
unsigned  index 
) const
inline

References impl, numPts, and sampleCtxArray.

void RixRNG::IncrementSampleIds ( ) const
inline
SampleCtx RixRNG::NewDomain ( unsigned  i,
Scramble  scramble 
) const
inline
SampleCtx RixRNG::NewDomainDistrib ( unsigned  i,
Scramble  scramble,
unsigned  newsampleid 
) const
inline
void RixRNG::NewDomains ( Scramble  scramble) const
inline
void RixRNG::NewDomains ( Scramble  scramble,
RixRNG newRng 
) const
inline
void RixRNG::NewDomainsDistrib ( Scramble  scramble,
unsigned  newsampleid 
) const
inline
void RixRNG::NewDomainsDistrib ( Scramble  scramble,
unsigned  newsampleid,
RixRNG newRng 
) const
inline
SampleCtx RixRNG::NewDomainSplit ( unsigned  i,
Scramble  scramble,
unsigned  newnumsamples 
) const
inline
void RixRNG::NewDomainsSplit ( Scramble  scramble,
unsigned  newnumsamples 
) const
inline
void RixRNG::NewDomainsSplit ( Scramble  scramble,
unsigned  newnumsamples,
RixRNG newRng 
) const
inline

References numPts.

Member Data Documentation


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