带倍频的柏林噪声函数

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;
    }
上一篇 下一篇

猜你喜欢

热点阅读