带倍频的柏林噪声函数
2020-05-04 本文已影响0人
子璇o
/// <summary>
/// 创建一个含倍频的柏林噪声
/// </summary>
/// <param name="x">x坐标</param>
/// <param name="y">y坐标</param>
/// <param name="octaves">倍频</param>
/// <param name="persistence">振幅系数</param>
/// <param name="scale">噪声选取范围</param>
/// <returns></returns>
public static float CreatOctavePerlin(int x,int y, int octaves, float persistence, float scale)
{
float sumOctaves = 0; //用于计算每次倍频的噪声和
float frequency = 1; //频率
float amplitude = 1; //振幅
for (int i = 0; i < octaves; i++)
{
sumOctaves += Mathf.PerlinNoise(x * frequency * scale / 100f, y * frequency * scale / 100f) * amplitude;
amplitude *= persistence;
frequency *= 2;
}
return sumOctaves;
}