RenderMan API  23.0
RixRNG Class Reference

#include <RixRNG.h>

Classes

class  Generator
 
class  ProgressiveSampler
 
struct  SampleCtx
 

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
 
RtFloat3 GenerateSample3D (unsigned i) const
 
float GenerateSample1D (SampleCtx &c, unsigned i) const
 
RtFloat2 GenerateSample2D (SampleCtx &c, unsigned i) const
 
RtFloat3 GenerateSample3D (SampleCtx &c, unsigned i) const
 
void GenerateSamples1D (float *xis) const
 
void GenerateSamples2D (RtFloat2 *xis) const
 
void GenerateSamples3D (RtFloat3 *xis) const
 
float DrawSample1D (unsigned i) const
 
RtFloat2 DrawSample2D (unsigned i) const
 
RtFloat3 DrawSample3D (unsigned i) const
 
float DrawSample1D (const SampleCtx &c, unsigned i) const
 
RtFloat2 DrawSample2D (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.

Definition at line 59 of file RixRNG.h.

Member Enumeration Documentation

◆ Scramble

enum RixRNG::Scramble : unsigned
strong

Definition at line 67 of file RixRNG.h.

Constructor & Destructor Documentation

◆ RixRNG() [1/7]

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

Definition at line 169 of file RixRNG.h.

◆ RixRNG() [2/7]

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

Definition at line 176 of file RixRNG.h.

◆ RixRNG() [3/7]

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

Definition at line 183 of file RixRNG.h.

◆ RixRNG() [4/7]

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

Definition at line 190 of file RixRNG.h.

◆ RixRNG() [5/7]

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

Definition at line 200 of file RixRNG.h.

◆ RixRNG() [6/7]

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

Definition at line 217 of file RixRNG.h.

◆ RixRNG() [7/7]

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

Definition at line 232 of file RixRNG.h.

◆ ~RixRNG()

virtual RixRNG::~RixRNG ( )
inlinevirtual

Definition at line 263 of file RixRNG.h.

Member Function Documentation

◆ DrawSample1D() [1/2]

float RixRNG::DrawSample1D ( unsigned  i) const
inline

Definition at line 340 of file RixRNG.h.

◆ DrawSample1D() [2/2]

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

Definition at line 356 of file RixRNG.h.

◆ DrawSample2D() [1/2]

RtFloat2 RixRNG::DrawSample2D ( unsigned  i) const
inline

Definition at line 345 of file RixRNG.h.

◆ DrawSample2D() [2/2]

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

Definition at line 361 of file RixRNG.h.

◆ DrawSample3D() [1/2]

RtFloat3 RixRNG::DrawSample3D ( unsigned  i) const
inline

Definition at line 350 of file RixRNG.h.

◆ DrawSample3D() [2/2]

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

Definition at line 366 of file RixRNG.h.

◆ DrawSamples1D()

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

Definition at line 372 of file RixRNG.h.

◆ DrawSamples2D()

void RixRNG::DrawSamples2D ( RtFloat2 xis) const
inline

Definition at line 377 of file RixRNG.h.

◆ DrawSamples3D()

void RixRNG::DrawSamples3D ( RtFloat3 xis) const
inline

Definition at line 382 of file RixRNG.h.

◆ GenerateSample1D() [1/2]

float RixRNG::GenerateSample1D ( unsigned  i) const
inline

Definition at line 277 of file RixRNG.h.

◆ GenerateSample1D() [2/2]

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

Definition at line 299 of file RixRNG.h.

◆ GenerateSample2D() [1/2]

RtFloat2 RixRNG::GenerateSample2D ( unsigned  i) const
inline

Definition at line 284 of file RixRNG.h.

◆ GenerateSample2D() [2/2]

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

Definition at line 306 of file RixRNG.h.

◆ GenerateSample3D() [1/2]

RtFloat3 RixRNG::GenerateSample3D ( unsigned  i) const
inline

Definition at line 291 of file RixRNG.h.

◆ GenerateSample3D() [2/2]

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

Definition at line 313 of file RixRNG.h.

◆ GenerateSamples1D()

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

Definition at line 321 of file RixRNG.h.

◆ GenerateSamples2D()

void RixRNG::GenerateSamples2D ( RtFloat2 xis) const
inline

Definition at line 327 of file RixRNG.h.

◆ GenerateSamples3D()

void RixRNG::GenerateSamples3D ( RtFloat3 xis) const
inline

Definition at line 333 of file RixRNG.h.

◆ GetSampleCtx()

SampleCtx& RixRNG::GetSampleCtx ( unsigned  i)
inline

Definition at line 269 of file RixRNG.h.

◆ GetSlice()

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

Definition at line 254 of file RixRNG.h.

◆ IncrementSampleIds()

void RixRNG::IncrementSampleIds ( ) const
inline

Definition at line 388 of file RixRNG.h.

◆ NewDomain()

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

Definition at line 395 of file RixRNG.h.

◆ NewDomainDistrib()

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

Definition at line 400 of file RixRNG.h.

◆ NewDomains() [1/2]

void RixRNG::NewDomains ( Scramble  scramble) const
inline

Definition at line 415 of file RixRNG.h.

◆ NewDomains() [2/2]

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

Definition at line 442 of file RixRNG.h.

◆ NewDomainsDistrib() [1/2]

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

Definition at line 422 of file RixRNG.h.

◆ NewDomainsDistrib() [2/2]

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

Definition at line 450 of file RixRNG.h.

◆ NewDomainSplit()

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

Definition at line 406 of file RixRNG.h.

◆ NewDomainsSplit() [1/2]

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

Definition at line 430 of file RixRNG.h.

◆ NewDomainsSplit() [2/2]

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

Definition at line 460 of file RixRNG.h.

Member Data Documentation

◆ impl

Generator const* RixRNG::impl

Definition at line 267 of file RixRNG.h.

◆ numPts

unsigned RixRNG::numPts

Definition at line 265 of file RixRNG.h.

◆ sampleCtxArray

SampleCtx* RixRNG::sampleCtxArray

Definition at line 266 of file RixRNG.h.


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