I'm currently trying to learn Perlin noise, specifically 2D noise for terrain generation. I've been reading articles online over the past few days, but they don't all seem to agree on how Perlin noise works, and the ones that do seem authoritative are very complex to understand.
So I have some questions that I'm hoping someone here can help clarify.
Some articles talk about starting with a grid of random numbers (a 2D grid for 2D noise), which makes sense. However, other articles talk about filling the grid with gradient vectors. Which is actually used for Perlin noise?
I don't know what a "gradient" vector is, but if it's an actual vector, that means filling each point on the grid with two numbers, right? Is it just a way to get two random numbers per grid point, or is there a reason to treat it like a directional vector? The articles talk about calculating distances between the vectors, but I thought that was what the interpolation step was for...
Many articles on Perlin noise talk about combining multiple levels of noise into octaves with varying frequency and amplitude, to get the nice organic results that I'm looking for. However, other articles say that Perlin noise is just a single octave, and the act of combining multiple levels of noise into multiple octaves is actually "Fractional Brownian Noise". Which is actually correct? Is Perlin noise itself just a form of white noise, not the combined noise that everyone uses it for?
Some articles fill out the grid with an initial set of random values to work with, and some articles just write their noise function so that it isn't entirely random, but spits out the same value for a given input. Which makes sense so the result (especially in 2D) doesn't look chaotic. But what about when you start combining multiple octaves of noise (FBN)? Does each octave need to come from the same set of values? Or can you seed a separate grid (or generator function) for each octave? I'd like to avoid repetition (seeing the same pattern repeat over the resulting image), but I don't know what the logic behind it is.
As far as the grid of random values (or gradient vectors...) you start with, does the size of that grid have anything to do with the final size of the image you are creating? Or is is purely a function of the frequency? As you increase the sample resolution for each octave, are you using larger and larger grids, or just resampling the same initial grid at a finer resolution?
Any clarification would be very helpful. Thanks.