![]() |
RenderMan
26.0
|
SampleCtx identifies a sample domain (an index into an arbitrary scheme of sample points). More...
#include <RixRNG.h>
Public Member Functions | |
SampleCtx | NewDomain (Scramble scramble) const |
Return a new SampleCtx domain based on this one, but with a scrambled pattern id based on the 'scramble' parameter (a bit pattern characterizing a sampling domain – e.g. More... | |
SampleCtx | NewDomainDistrib (Scramble scramble, unsigned newsampleid) const |
Return a new SampleCtx domain based on this one, but with a scrambled pattern id based on the 'scramble' parameter (a bit pattern characterizing a sampling domain – e.g. More... | |
SampleCtx | NewDomainSplit (Scramble scramble, unsigned newnumsamples) const |
Return a new SampleCtx domain based on this one, but with a scrambled pattern id based on the 'scramble' parameter (a bit pattern characterizing a sampling domain – e.g. More... | |
Public Attributes | |
unsigned | patternid |
unsigned | patternidEmit |
unsigned | sampleid |
SampleCtx identifies a sample domain (an index into an arbitrary scheme of sample points).
It represents a point of consumption for sample points – e.g. picking a direction and picking a position might be two distinct domains which both want independent streams of decorrelated sample points. A SampleCtx domain may be used to pick a sample point or to derive a new SampleCtx domain.
Return a new SampleCtx domain based on this one, but with a scrambled pattern id based on the 'scramble' parameter (a bit pattern characterizing a sampling domain – e.g.
a number based on brdf 'lobe') and inherited pattern id. The new sample id is inherited from this sampleCtx. To utilize tiled blue noise sample tables, the sequence id (stored in the top 16 bits) has to be unscrambled (but can have a constant shift to a different blue-noise tile location) when a new domain is created.
References patternid, and RixRNGUtils::shufflePattern().
Referenced by RixRNG::NewDomain(), and RixRNG::NewDomains().
|
inline |
Return a new SampleCtx domain based on this one, but with a scrambled pattern id based on the 'scramble' parameter (a bit pattern characterizing a sampling domain – e.g.
a number based on brdf 'lobe'), the inherited pattern id, and the sample id. Including the sample id in the creation of a new pattern id ensures that there is a new, independent sample distribution for every iteration. This form should be preferred where the new domain's expected number of samples differs from that of the parent and repeated visits may nor may not have the same sample count or may consume differing numbers of samples: distribution sampling. To utilize tiled blue noise sample tables, the sequence id (stored in the top 16 bits) has to be unscrambled (but can have a constant shift to a different blue-noise tile location) when a new domain is created.
References patternid, sampleid, and RixRNGUtils::shufflePattern().
Referenced by RixRNG::NewDomainDistrib(), RixRNG::NewDomainsDistrib(), and RixRNG::ProgressiveSampler::Sample1D().
|
inline |
Return a new SampleCtx domain based on this one, but with a scrambled pattern id based on the 'scramble' parameter (a bit pattern characterizing a sampling domain – e.g.
a number based on brdf 'lobe') and inherited pattern id, and a new number of samples. This form should be preferred where every visit will consume the same number of samples, and it is expected that all sibling visits will also always result in the drawing of a new domain – thus exploring the full space. Uses trajectory splitting. If newnumsamples is 1 this is the same as just NewDomain(scramble). To utilize tiled blue noise sample tables, the sequence id (stored in the top 16 bits) has to be unscrambled (but can have a constant shift to a different blue-noise tile location) when a new domain is created.
References patternid, sampleid, and RixRNGUtils::shufflePattern().
Referenced by RixRNG::NewDomainSplit(), RixRNG::NewDomainsSplit(), and RixRNG::ProgressiveSampler::ScrambledSample2D().
unsigned RixRNG::SampleCtx::patternid |
Referenced by NewDomain(), NewDomainDistrib(), and NewDomainSplit().
unsigned RixRNG::SampleCtx::patternidEmit |
unsigned RixRNG::SampleCtx::sampleid |