Returns a 2D sample from a particular pattern using correlated multi-jittered sampling [Kensler 2013]
| 370 | |
| 371 | // Returns a 2D sample from a particular pattern using correlated multi-jittered sampling [Kensler 2013] |
| 372 | Float2 SampleCMJ2D(int32 sampleIdx, int32 numSamplesX, int32 numSamplesY, int32 pattern) |
| 373 | { |
| 374 | int32 N = numSamplesX * numSamplesY; |
| 375 | sampleIdx = CMJPermute(sampleIdx, N, pattern * 0x51633e2d); |
| 376 | int32 sx = CMJPermute(sampleIdx % numSamplesX, numSamplesX, pattern * 0x68bc21eb); |
| 377 | int32 sy = CMJPermute(sampleIdx / numSamplesX, numSamplesY, pattern * 0x02e5be93); |
| 378 | float jx = CMJRandFloat(sampleIdx, pattern * 0x967a889b); |
| 379 | float jy = CMJRandFloat(sampleIdx, pattern * 0x368cc8b7); |
| 380 | return Float2((sx + (sy + jx) / numSamplesY) / numSamplesX, (sampleIdx + jy) / N); |
| 381 | } |
| 382 | |
| 383 | void GenerateRandomSamples2D(Float2* samples, uint64 numSamples, Random& randomGenerator) |
| 384 | { |
no test coverage detected