Patchy/Non-Smooth Perlin Noise?

Yo, I’m trying to make a perlin noise generator for height and biome maps, however it looks patchy and not at all what I want it to. I’m new to noise generation, so any tips?

This is mine: (Sorry it’s so big)

and this is somewhat what I want it to look like:

There are a number of ways the problem could be coming up. Can you tell us more about what Perlin function you are using and what parameters you are giving this function?

The target diagram looks to me like a single octave using the “smooth” scaling algorithm. Perlin functions usually return values from -1 to 1. This output has to be turned into a color or greyscale value. Color functions take values that range from 0 to 1 (or 0 to 255 if ints). Perlin called the following scaling “smooth” noise:


    // I am making up the Perlin functions here, to get a value (ranges from -1 to 1) 
    pValue = PerlinFunction.getNoise(x, y);

    // "smooth" scaling (obtaining resulting range of 0..1)
    colorValue = (pVal + 1) / 2;

    // use color value as argument to color -- if using 0 to 255, then multiple colorValue by 255 first
    pixelColor = new Color(colorValue, colorValue, colorValue);

He also calls a function that uses an ABS value “turbulent” noise:


    // I am making up the Perlin functions here, to get a value (ranges from -1 to 1) 
    pValue = PerlinFunction.getNoise(x, y);

    // "smooth" scaling
    colorValue = Math.abs(pVal);


Here is the code that I use to make the noise: https://pastebin.com/zyYwymMQ and the # startNoise() is where it is printed into a image. I thought I was already creating smooth noise or is it another kind?

I can’t tell if the functions you have are generating gradient noise or not. You are over my head, in terms of writing your own implementation. I’ve always used the Gustafson implementation. We also have an implementation available on JGO, which should be searchable or in the wiki area.

I have some suggestions, just based on what I am seeing.

It seems to me you might be doing some sort of “clamping” to the data, to keep it within bounds. Yes, I see it on line 73-78.

I think you will get a more rounded look if the values that you generate are set up so that they never need clamping. Whenever you clamp, you are going to get plateau effects.

Secondly, the target image looks very much to me like something generated with a single octave of Perlin Simplex noise. You are using six octaves of whatever it is you have implemented, as far as I can tell. The higher octaves are going to add a lot of business and jitter to the images.