33 std::uint32_t samples[State64Bit::maxIndexSize][4];
34 std::uint32_t
keyTable[bntables::size];
38 static constexpr std::size_t cacheSize =
sizeof(
CacheType);
39 static void initialiseCache(
void*
cache);
61inline void PmjBnImpl::initialiseCache(
void*
cache)
81inline PmjBnImpl::PmjBnImpl(
int x,
int y,
int frame,
int index,
83 : state(x, y, frame, index), cache(static_cast<const CacheType*>(cache))
88inline PmjBnImpl PmjBnImpl::newDomain(
int key)
const
90 return {state.newDomain(key), cache};
93inline PmjBnImpl PmjBnImpl::newDomainSplit(
int key,
int size,
int index)
const
95 return {state.newDomainSplit(key, size, index), cache};
98inline PmjBnImpl PmjBnImpl::newDomainDistrib(
int key,
int index)
const
100 return {state.newDomainDistrib(key, index), cache};
104void PmjBnImpl::drawSample(std::uint32_t sample[Size])
const
106 constexpr auto xBits = State64Bit::spatialEncodeBitSizeX;
107 constexpr auto yBits = State64Bit::spatialEncodeBitSizeY;
109 static_assert(
xBits == bntables::xBits,
110 "Pixel x encoding must match table.");
111 static_assert(
yBits == bntables::yBits,
112 "Pixel y encoding must match table.");
114 const auto table = bntables::tableValue<xBits, yBits, 0>(
115 state.pixelId, pcg::output(state.patternId), cache->keyTable,
118 shuffledScrambledLookup<4, Size>(state.sampleId ^ table.rank, table.key,
119 cache->samples, sample);
123void PmjBnImpl::drawRnd(std::uint32_t rnd[Size])
const
125 state.newDomain(state.pixelId).drawRnd<Size>(rnd);
#define OQMC_HOST_DEVICE
Definition gpu.h:13
Public sampler API.
Definition sampler.h:111
EncodeKey decodeBits16(std::uint16_t value)
Decode a value back into a key.
Definition encode.h:81
constexpr std::uint32_t keyTable[]
Optimised blue noise key table for pmj.
Definition bntables.h:93
constexpr std::uint32_t rankTable[]
Optimised blue noise rank table for pmj.
Definition bntables.h:98
constexpr auto yBits
256 pixels in y.
Definition bntables.h:70
constexpr auto xBits
256 pixels in x.
Definition bntables.h:69
void stochasticPmjInit(int nsamples, std::uint32_t table[][4])
Initialise a table with a progressive mult-jittered (0,2) sequence.
Definition stochastic.h:33
static constexpr auto maxIndexSize
2^16 index upper limit.
Definition state.h:30