Kastell/Assets/Pixel3D/Shaders/Random.cginc
Gerard Gascón f5c1616018 init
2025-02-02 23:45:04 +01:00

32 lines
No EOL
671 B
HLSL

uint rng_state;
//Hash invented by Thomas Wang
void wang_hash(uint seed) {
rng_state = (seed ^ 61) ^ (seed >> 16);
rng_state *= 9;
rng_state = rng_state ^ (rng_state >> 4);
rng_state *= 0x27d4eb2d;
rng_state = rng_state ^ (rng_state >> 15);
}
//Xorshift algorithm from George Marsaglia's paper
uint rand_xorshift() {
rng_state ^= (rng_state << 13);
rng_state ^= (rng_state >> 17);
rng_state ^= (rng_state << 5);
return rng_state;
}
float randValue() {
return rand_xorshift() * (1.0 / 4294967296.0);
}
void initRand(uint seed) {
wang_hash(seed);
}
float randValue(uint seed) {
initRand(seed);
return randValue();
}