add white noise to FastNoiseLite

This commit is contained in:
dfsek 2021-01-08 11:51:07 -07:00
parent 28b6fe49bb
commit 9a94485c91

View File

@ -777,6 +777,8 @@ public class FastNoiseLite implements NoiseSampler {
return singleValueCubic(seed, x, y); return singleValueCubic(seed, x, y);
case Value: case Value:
return singleValue(seed, x, y); return singleValue(seed, x, y);
case WhiteNoise:
return singleWhiteNoise(seed, x, y);
default: default:
return 0; return 0;
} }
@ -796,6 +798,8 @@ public class FastNoiseLite implements NoiseSampler {
return singleValueCubic(seed, x, y, z); return singleValueCubic(seed, x, y, z);
case Value: case Value:
return singleValue(seed, x, y, z); return singleValue(seed, x, y, z);
case WhiteNoise:
return singleWhiteNoise(seed, x, y, z);
default: default:
return 0; return 0;
} }
@ -1611,6 +1615,27 @@ public class FastNoiseLite implements NoiseSampler {
return lerp(xf0, xf1, ys) * 1.4247691104677813f; return lerp(xf0, xf1, ys) * 1.4247691104677813f;
} }
private int doubleCast2Int(double f) {
int i = Float.floatToRawIntBits((float) f);
return i ^ (i >> 16);
}
private double singleWhiteNoise(int seed, double x, double y, double z) {
int xi = doubleCast2Int(x);
int yi = doubleCast2Int(y);
int zi = doubleCast2Int(z);
return valCoord(seed, xi, yi, zi);
}
private double singleWhiteNoise(int seed, double x, double y) {
int xi = doubleCast2Int(x);
int yi = doubleCast2Int(y);
return valCoord(seed, xi, yi);
}
// Simplex/OpenSimplex2 Noise // Simplex/OpenSimplex2 Noise
private double singlePerlin(int seed, double x, double y, double z) { private double singlePerlin(int seed, double x, double y, double z) {
int x0 = fastFloor(x); int x0 = fastFloor(x);
@ -2482,7 +2507,8 @@ public class FastNoiseLite implements NoiseSampler {
Cellular, Cellular,
Perlin, Perlin,
ValueCubic, ValueCubic,
Value Value,
WhiteNoise
} }