36 lines
973 B
HLSL
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
|