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

Function GenerateIntegrationSamples

BakingLab/PathTracer.cpp:207–246  ·  view source on GitHub ↗

Generates a full list of sample points for all integration types

Source from the content-addressed store, hash-verified

205
206// Generates a full list of sample points for all integration types
207void GenerateIntegrationSamples(IntegrationSamples& samples, uint64 sqrtNumSamples, uint64 tileSizeX, uint64 tileSizeY,
208 SampleModes sampleMode, uint64 numIntegrationTypes, Random& rng)
209{
210 const uint64 numSamplesPerPixel = sqrtNumSamples * sqrtNumSamples;
211 const uint64 numTilePixels = tileSizeX * tileSizeY;
212 const uint64 numSamplesPerTile = numSamplesPerPixel * numTilePixels;
213 samples.Init(numTilePixels, numIntegrationTypes, numSamplesPerPixel);
214
215 for(uint64 pixelIdx = 0; pixelIdx < numTilePixels; ++pixelIdx)
216 {
217 for(uint64 typeIdx = 0; typeIdx < numIntegrationTypes; ++typeIdx)
218 {
219 Float2* typeSamples = samples.GetSamplesForType(pixelIdx, typeIdx);
220 if(sampleMode == SampleModes::Stratified)
221 {
222 GenerateStratifiedSamples2D(typeSamples, sqrtNumSamples, sqrtNumSamples, rng);
223 Shuffle(typeSamples, numSamplesPerPixel, rng);
224 }
225 else if(sampleMode == SampleModes::UniformGrid)
226 {
227 GenerateGridSamples2D(typeSamples, sqrtNumSamples, sqrtNumSamples);
228 Shuffle(typeSamples, numSamplesPerPixel, rng);
229 }
230 else if(sampleMode == SampleModes::Hammersley)
231 {
232 GenerateHammersleySamples2D(typeSamples, numSamplesPerPixel, typeIdx);
233 Shuffle(typeSamples, numSamplesPerPixel, rng);
234 }
235 else if(sampleMode == SampleModes::CMJ)
236 {
237 GenerateCMJSamples2D(typeSamples, sqrtNumSamples, sqrtNumSamples, rng.RandomUint());
238 Shuffle(typeSamples, numSamplesPerPixel, rng);
239 }
240 else
241 {
242 GenerateRandomSamples2D(typeSamples, numSamplesPerPixel, rng);
243 }
244 }
245 }
246}
247
248// Returns the incoming radiance along the ray specified by params.RayDir, computed using unidirectional
249// path tracing

Callers 2

InitializeMethod · 0.85
UpdateMethod · 0.85

Calls 9

ShuffleFunction · 0.85
GenerateGridSamples2DFunction · 0.85
GenerateCMJSamples2DFunction · 0.85
GenerateRandomSamples2DFunction · 0.85
GetSamplesForTypeMethod · 0.80
RandomUintMethod · 0.80
InitMethod · 0.45

Tested by

no test coverage detected