RenderManAPI  24.0
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

◆ Scramble

enum RixRNG::Scramble : unsigned
strong

Constructor & Destructor Documentation

◆ RixRNG() [1/7]

RixRNG::RixRNG ( Generator const *  imp,
unsigned  scaSize = 0 
)
inline

◆ RixRNG() [2/7]

RixRNG::RixRNG ( Generator const *  imp,
unsigned  scaSize,
SampleCtx sca 
)
inline

◆ RixRNG() [3/7]

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

◆ RixRNG() [4/7]

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

◆ RixRNG() [5/7]

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

References NewDomains(), and numPts.

◆ RixRNG() [6/7]

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

References NewDomainsSplit(), and numPts.

◆ RixRNG() [7/7]

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

◆ ~RixRNG()

virtual RixRNG::~RixRNG ( )
inlinevirtual

Member Function Documentation

◆ DrawSample1D() [1/2]

float RixRNG::DrawSample1D ( unsigned  i) const
inline

◆ DrawSample1D() [2/2]

float RixRNG::DrawSample1D ( const SampleCtx c,
unsigned  i 
) const
inline

◆ DrawSample2D() [1/2]

RtFloat2 RixRNG::DrawSample2D ( unsigned  i) const
inline

◆ DrawSample2D() [2/2]

RtFloat2 RixRNG::DrawSample2D ( const SampleCtx c,
unsigned  i 
) const
inline

◆ DrawSample3D() [1/2]

RtFloat3 RixRNG::DrawSample3D ( unsigned  i) const
inline

◆ DrawSample3D() [2/2]

RtFloat3 RixRNG::DrawSample3D ( const SampleCtx c,
unsigned  i 
) const
inline

◆ DrawSamples1D()

void RixRNG::DrawSamples1D ( float *  xis) const
inline

◆ DrawSamples2D()

void RixRNG::DrawSamples2D ( RtFloat2 xis) const
inline

◆ DrawSamples3D()

void RixRNG::DrawSamples3D ( RtFloat3 xis) const
inline

◆ DrawScrambledSample2D() [1/2]

RtFloat2 RixRNG::DrawScrambledSample2D ( unsigned  i) const
inline

◆ DrawScrambledSample2D() [2/2]

RtFloat2 RixRNG::DrawScrambledSample2D ( const SampleCtx c,
unsigned  i 
) const
inline

◆ GenerateSample1D() [1/2]

float RixRNG::GenerateSample1D ( unsigned  i) const
inline

◆ GenerateSample1D() [2/2]

float RixRNG::GenerateSample1D ( SampleCtx c,
unsigned  i 
) const
inline

◆ GenerateSample2D() [1/2]

RtFloat2 RixRNG::GenerateSample2D ( unsigned  i) const
inline

◆ GenerateSample2D() [2/2]

RtFloat2 RixRNG::GenerateSample2D ( SampleCtx c,
unsigned  i 
) const
inline

◆ GenerateSample3D() [1/2]

RtFloat3 RixRNG::GenerateSample3D ( unsigned  i) const
inline

◆ GenerateSample3D() [2/2]

RtFloat3 RixRNG::GenerateSample3D ( SampleCtx c,
unsigned  i 
) const
inline

◆ GenerateSamples1D()

void RixRNG::GenerateSamples1D ( float *  xis) const
inline

◆ GenerateSamples2D()

void RixRNG::GenerateSamples2D ( RtFloat2 xis) const
inline

◆ GenerateSamples3D()

void RixRNG::GenerateSamples3D ( RtFloat3 xis) const
inline

◆ GenerateScrambledSample2D() [1/2]

RtFloat2 RixRNG::GenerateScrambledSample2D ( unsigned  i) const
inline

◆ GenerateScrambledSample2D() [2/2]

RtFloat2 RixRNG::GenerateScrambledSample2D ( SampleCtx c,
unsigned  i 
) const
inline

◆ GenerateScrambledSamples2D()

void RixRNG::GenerateScrambledSamples2D ( RtFloat2 xis) const
inline

◆ GetSampleCtx()

SampleCtx& RixRNG::GetSampleCtx ( unsigned  i)
inline

References sampleCtxArray.

◆ GetSlice()

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

References impl, numPts, and sampleCtxArray.

◆ IncrementSampleIds()

void RixRNG::IncrementSampleIds ( ) const
inline

◆ NewDomain()

SampleCtx RixRNG::NewDomain ( unsigned  i,
Scramble  scramble 
) const
inline

◆ NewDomainDistrib()

SampleCtx RixRNG::NewDomainDistrib ( unsigned  i,
Scramble  scramble,
unsigned  newsampleid 
) const
inline

◆ NewDomains() [1/2]

void RixRNG::NewDomains ( Scramble  scramble) const
inline

◆ NewDomains() [2/2]

void RixRNG::NewDomains ( Scramble  scramble,
RixRNG newRng 
) const
inline

References numPts.

◆ NewDomainsDistrib() [1/2]

void RixRNG::NewDomainsDistrib ( Scramble  scramble,
unsigned  newsampleid 
) const
inline

◆ NewDomainsDistrib() [2/2]

void RixRNG::NewDomainsDistrib ( Scramble  scramble,
unsigned  newsampleid,
RixRNG newRng 
) const
inline

◆ NewDomainSplit()

SampleCtx RixRNG::NewDomainSplit ( unsigned  i,
Scramble  scramble,
unsigned  newnumsamples 
) const
inline

◆ NewDomainsSplit() [1/2]

void RixRNG::NewDomainsSplit ( Scramble  scramble,
unsigned  newnumsamples 
) const
inline

◆ NewDomainsSplit() [2/2]

void RixRNG::NewDomainsSplit ( Scramble  scramble,
unsigned  newnumsamples,
RixRNG newRng 
) const
inline

Member Data Documentation

◆ impl

◆ numPts

◆ sampleCtxArray


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