MT naive implementation
added perlin noise density function