How do I turn Simplex noise like:
into something like:
or
The noise has too many white spots and varies too much to represent things like continents. Where it's water, water, water, and then land with cut out edges.
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It only takes a minute to sign up.
Sign up to join this communityIt looks like you're looking for "Turbulence", "Fractional Brownian Motion", or something similar.
This is where we take multiple samples of the noise at different scales - like the different panes in your first image - and add them together.
Each noise sample is commonly called an "octave". For each octave we add, we sample at a higher frequency (so the noise gets denser), but we also scale its output to a smaller amplitude (so the noise gets fainter).
So we might sample the lowest octave (one big white blob) with amplitude 1, then the next octave at amplitude 1/2, then the next at amplitude 1/4...
This gives large variation over long scales (the difference between continent and ocean), with each added octave having a more and more gentle influence, shaping the highs and lows and adding more variation to the coastline in-between.
Here are the 8 panes of noise from your image at the top, averaged together with the weight reduced by about half at each octave:
Note how we get a cloudy-looking noise, with feature variation at all scales. There are global highs and lows created by the low octaves (the bright white on the left / dark black along the top and bottom), but also smaller highs and lows everywhere in-between. This gives the noise a fractal quality similar to real landscapes, where the closer you look, you keep finding more detail.
Now if we just colourize this map, drawing the dark greys as blues, and the lighter greys as sandy/leafy/rocky, we get something that begins to look like continents!
One thing to watch out for: usually we'll want to de-correlate the noise we use at each octave, by changing the hash function or applying a spatial offset. That way you avoid artifacts from repeated features in the vicinity of the origin (which doesn't automatically change as we increase our frequency scale)
You can play with how you generate and scale your noise at each octave to get different effects - taking the absolute value to get "ridge noise" for mountain spines, squaring the noise to change its distribution, etc. There are lots of great articles with different suggestions about how to craft your noise for just the right kind of terrain.
Not with noise alone.
The other answer is correct, you overlay several octaves of noise to get a realistic structure. But you need to bring in physics as well or it won't be a result resembling reality.
The first approach is to add an erosion model. There's a lot of good sources for how to do that available. This will create ridges and channels in your mountains and get rid of the ten thousand tiny islands problem.
The second approach is to more straighforward modulate the results. Run a calculation of land size just above the waterline and remove small islands.
If your goal is realistic continents, you can also go away from noise and use plate tectonics, like here: http://davidson16807.github.io/tectonics.js/