MCPcopy Create free account
hub / github.com/TheRealMJP/BakingLab / SampleCMJ2D

Function SampleCMJ2D

SampleFramework11/v1.02/Graphics/Sampling.cpp:147–156  ·  view source on GitHub ↗

Returns a 2D sample from a particular pattern using correlated multi-jittered sampling [Kensler 2013]

Source from the content-addressed store, hash-verified

145
146 // Returns a 2D sample from a particular pattern using correlated multi-jittered sampling [Kensler 2013]
147Float2 SampleCMJ2D(int32 sampleIdx, int32 numSamplesX, int32 numSamplesY, int32 pattern)
148{
149 int32 N = numSamplesX * numSamplesY;
150 sampleIdx = CMJPermute(sampleIdx, N, pattern * 0x51633e2d);
151 int32 sx = CMJPermute(sampleIdx % numSamplesX, numSamplesX, pattern * 0x68bc21eb);
152 int32 sy = CMJPermute(sampleIdx / numSamplesX, numSamplesY, pattern * 0x02e5be93);
153 float jx = CMJRandFloat(sampleIdx, pattern * 0x967a889b);
154 float jy = CMJRandFloat(sampleIdx, pattern * 0x368cc8b7);
155 return Float2((sx + (sy + jx) / numSamplesY) / numSamplesX, (sampleIdx + jy) / N);
156}
157
158void GenerateCMJSamples2D(Float2* samples, uint64 numSamplesX, uint64 numSamplesY, uint32 pattern)
159{

Callers 3

GenerateCMJSamples2DFunction · 0.85

Calls 3

CMJPermuteFunction · 0.85
CMJRandFloatFunction · 0.85
Float2Class · 0.85

Tested by

no test coverage detected