mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
40 lines
749 B
GLSL
40 lines
749 B
GLSL
|
|
uint Hash(uint s);
|
|
uint Hash(uvec2 s);
|
|
uint Hash(uvec3 s);
|
|
uint Hash(float s);
|
|
uint HashCombine(uint seed, uint value);
|
|
|
|
// Evolving Sub-Grid Turbulence for Smoke Animation
|
|
// H. Schechter and R. Bridson
|
|
uint Hash(uint s) {
|
|
s ^= 2747636419u;
|
|
s *= 2654435769u;
|
|
s ^= s >> 16u;
|
|
s *= 2654435769u;
|
|
s ^= s >> 16u;
|
|
s *= 2654435769u;
|
|
return s;
|
|
}
|
|
|
|
uint Hash(uvec2 s) {
|
|
return HashCombine(Hash(s.x), s.y);
|
|
}
|
|
|
|
uint Hash(uvec3 s) {
|
|
return HashCombine(Hash(s.xy), s.z);
|
|
}
|
|
|
|
uint HashCombine(uint seed, uint value) {
|
|
return seed ^ (Hash(value) + 0x9e3779b9u + (seed<<6u) + (seed>>2u));
|
|
}
|
|
|
|
uint Rand(inout uint seed) {
|
|
seed = Hash(seed);
|
|
return seed;
|
|
}
|
|
|
|
float RandF(inout uint seed) {
|
|
return float(Rand(seed)) * 2.3283064365386963e-10;
|
|
}
|