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

Function CMJPermute

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

Source from the content-addressed store, hash-verified

105}
106
107static uint32 CMJPermute(uint32 i, uint32 l, uint32 p)
108{
109 uint32 w = l - 1;
110 w |= w >> 1;
111 w |= w >> 2;
112 w |= w >> 4;
113 w |= w >> 8;
114 w |= w >> 16;
115 do
116 {
117 i ^= p; i *= 0xe170893d;
118 i ^= p >> 16;
119 i ^= (i & w) >> 4;
120 i ^= p >> 8; i *= 0x0929eb3f;
121 i ^= p >> 23;
122 i ^= (i & w) >> 1; i *= 1 | p >> 27;
123 i *= 0x6935fa69;
124 i ^= (i & w) >> 11; i *= 0x74dcb303;
125 i ^= (i & w) >> 2; i *= 0x9e501cc3;
126 i ^= (i & w) >> 2; i *= 0xc860a3df;
127 i &= w;
128 i ^= i >> 5;
129 }
130 while (i >= l);
131 return (i + p) % l;
132}
133
134static float CMJRandFloat(uint32 i, uint32 p)
135{

Callers 1

SampleCMJ2DFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected