You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.2 KiB
63 lines
1.2 KiB
|
6 years ago
|
#ifndef __NOISE_MATH__
|
||
|
|
#define __NOISE_MATH__
|
||
|
|
|
||
|
|
// Modulo 289 without a division (only multiplications)
|
||
|
|
float mod289(float x) {
|
||
|
|
return x - floor(x * (1.0 / 289.0)) * 289.0;
|
||
|
|
}
|
||
|
|
|
||
|
|
float2 mod289(float2 x) {
|
||
|
|
return x - floor(x * (1.0 / 289.0)) * 289.0;
|
||
|
|
}
|
||
|
|
|
||
|
|
float3 mod289(float3 x) {
|
||
|
|
return x - floor(x * (1.0 / 289.0)) * 289.0;
|
||
|
|
}
|
||
|
|
|
||
|
|
float4 mod289(float4 x) {
|
||
|
|
return x - floor(x * (1.0 / 289.0)) * 289.0;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Modulo 7 without a division
|
||
|
|
float3 mod7(float3 x) {
|
||
|
|
return x - floor(x * (1.0 / 7.0)) * 7.0;
|
||
|
|
}
|
||
|
|
|
||
|
|
float4 mod7(float4 x) {
|
||
|
|
return x - floor(x * (1.0 / 7.0)) * 7.0;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Permutation polynomial: (34x^2 + x) mod 289
|
||
|
|
float permute(float x) {
|
||
|
|
return mod289(((x*34.0) + 1.0)*x);
|
||
|
|
}
|
||
|
|
|
||
|
|
float3 permute(float3 x) {
|
||
|
|
return mod289((34.0 * x + 1.0) * x);
|
||
|
|
}
|
||
|
|
|
||
|
|
float4 permute(float4 x) {
|
||
|
|
return mod289((34.0 * x + 1.0) * x);
|
||
|
|
}
|
||
|
|
|
||
|
|
float taylorInvSqrt(float r) {
|
||
|
|
return 1.79284291400159 - 0.85373472095314 * r;
|
||
|
|
}
|
||
|
|
|
||
|
|
float4 taylorInvSqrt(float4 r) {
|
||
|
|
return 1.79284291400159 - 0.85373472095314 * r;
|
||
|
|
}
|
||
|
|
|
||
|
|
float2 fade(float2 t) {
|
||
|
|
return t*t*t*(t*(t*6.0 - 15.0) + 10.0);
|
||
|
|
}
|
||
|
|
|
||
|
|
float3 fade(float3 t) {
|
||
|
|
return t*t*t*(t*(t*6.0 - 15.0) + 10.0);
|
||
|
|
}
|
||
|
|
|
||
|
|
float4 fade(float4 t) {
|
||
|
|
return t*t*t*(t*(t*6.0 - 15.0) + 10.0);
|
||
|
|
}
|
||
|
|
|
||
|
|
#endif
|