I'm still pretty "new" to perlin noise, but aren't you supposed to combine many random waves. First ones smooth big ones, then smaller and sharper. From line 99+, you are using same frequency for all of them. Do i just misunderstand the code?
Could be the PerlinNoise2d() already does the multi-wave math for you.
Bookmarks