protected float BrownianMotionNoise(float x, float y, float z) { var N = 0f; var F = frequency; var A = 1f; for (var i = 0; i < octaves; i++) { var n = ImprovedNoise.Sample(x * F, y * F, z * F, seed: seed + i, repeat: repeat); N += (n * A); A *= persistence; F *= lacunarity; } return(N); }
protected float MultiFractalNoise(float x, float y, float z) { var N = 1f; var F = frequency; var A = 1f; for (var i = 0; i < octaves; i++) { var n = -1 + ImprovedNoise.Sample(x * F, y * F, z * F, seed: seed + i, repeat: repeat); N *= (n * A); A *= persistence; F *= lacunarity; } return(N); }
protected float BillowNoise(float x, float y, float z) { var N = 0f; var F = frequency; var A = 1f; for (var i = 0; i < octaves; i++) { var s = ImprovedNoise.Sample(x * F, y * F, z * F, seed: seed + i, repeat: repeat); s *= A; s = Mathf.Abs(s); N += (s * lacunarity) + bias; A *= persistence; F *= lacunarity; } //at this point N is between 0 and 1, so we make it -1, 1 N = N * 2 - 1; return(N); }
protected float RidgeNoise(float x, float y, float z) { var F = frequency; var A = 1f; var N = 1f - Mathf.Abs(ImprovedNoise.Sample(x * F, y * F, z * F, seed: seed, repeat: repeat)); N *= N; var s = N; for (var i = 1; i < octaves; i++) { var weight = Mathf.Clamp01(s * 2); F *= lacunarity; A *= persistence; s = 1f - Mathf.Abs(ImprovedNoise.Sample(x * F, y * F, z * F, seed: seed + i, repeat: repeat)); s *= s; s *= weight; N += s * A; } //at this point N is between 0 and 1, so we make it -1, 1 N = N * 2 - 1; return(N); }