added perlin noise