MCPcopy Create free account
hub / github.com/TheRealMJP/DeferredTexturing / CMJPermute

Function CMJPermute

SampleFramework12/v1.00/Graphics/Sampling.cpp:332–357  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

330}
331
332static uint32 CMJPermute(uint32 i, uint32 l, uint32 p)
333{
334 uint32 w = l - 1;
335 w |= w >> 1;
336 w |= w >> 2;
337 w |= w >> 4;
338 w |= w >> 8;
339 w |= w >> 16;
340 do
341 {
342 i ^= p; i *= 0xe170893d;
343 i ^= p >> 16;
344 i ^= (i & w) >> 4;
345 i ^= p >> 8; i *= 0x0929eb3f;
346 i ^= p >> 23;
347 i ^= (i & w) >> 1; i *= 1 | p >> 27;
348 i *= 0x6935fa69;
349 i ^= (i & w) >> 11; i *= 0x74dcb303;
350 i ^= (i & w) >> 2; i *= 0x9e501cc3;
351 i ^= (i & w) >> 2; i *= 0xc860a3df;
352 i &= w;
353 i ^= i >> 5;
354 }
355 while (i >= l);
356 return (i + p) % l;
357}
358
359static float CMJRandFloat(uint32 i, uint32 p)
360{

Callers 1

SampleCMJ2DFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected