Sure, there's plenty. What you could firstly try is take the output of multiple noises and find different ways to combine them. Minecraft for example combines a height-based perlin noise with another perlin that offsets pixels in sideways directions. Another idea is to not take the raw output of a noise function, but do something with it. Things like multiplying two noises, dividing noises, taking the absolute value of noise_a - noise_b, etc. There are lots of possibilities with just basic perlin or simplex.


Sure, there are plenty. The reason people use simplex/perlin/diamond-square is that they're *easy* to get started with. In every project I will start with simplex and then *afterwards* use something else. The problem is the "something else" depends on the project, so there's not one answer. For example, in one project I needed to have no lakes or canyons or cliffs, and very few mountain peaks. I ended up making a distance field to calculate the distance from the coastline. And I created the coastline based on a superposition of sine waves (essentially a type of noise in polar coordinates). But that specific combination wasn't at all what I needed for the next project, so I had to do something completely different the next time. My recommendation would be to use simplex noise if you don't have specific requirements. If you do have specific requirements, say what they are, as those requirements are how to decide on an algorithm.


Wave function collapse. YouTube.