Files
Fishing2/Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Noise/Noise.hlsl
2025-05-10 12:49:47 +08:00

36 lines
973 B
HLSL

// See header/license in SOURCE.txt file accompanying this shader.
// Trivial modifications made to the code to translate it to HLSL by Huw Bowles
#ifndef CREST_GPU_NOISE_INCLUDED
#define CREST_GPU_NOISE_INCLUDED
uint baseHash(uint3 p)
{
p = 1103515245U * ((p.xyz >> 1U) ^ (p.yzx));
uint h32 = 1103515245U * ((p.x^p.z) ^ (p.y >> 3U));
return h32 ^ (h32 >> 16);
}
float hash13(uint3 x)
{
uint n = baseHash(x);
return float(n)*(1.0 / float(0xffffffffU));
}
float2 hash23(float3 x)
{
uint n = baseHash(x);
uint2 rz = uint2(n, n * 48271U); //see: http://random.mat.sbg.ac.at/results/karl/server/node4.html
return float2(rz.xy & (uint2)0x7fffffffU) / float(0x7fffffff);
}
float3 hash33(uint3 x)
{
uint n = baseHash(x);
uint3 rz = uint3(n, n * 16807U, n * 48271U); //see: http://random.mat.sbg.ac.at/results/karl/server/node4.html
return float3(rz & (uint3)0x7fffffffU) / float(0x7fffffff);
}
#endif // CREST_GPU_NOISE_INCLUDED