Perlin Noise Terrain Demo

I made a web player demo where you can tweak a dynamically generated terrain. It morphs in realtime.

1404021--72979--$terrain-demo.png

I made this demo as part of my NumberFlow project, but it also stands on its own as a demonstration of Perlin Noise terrain, as well as what you can do with a single 64x64 texture.

1404021--72980--$terrain-demo-2.png

See what kind of terrain you can coax out of it here!

1404021--72981--$terrain-demo-3.png

I like the altitude-based coloring. It would be interesting to see if you could auto-generate splat-maps based on terrain height or slope. I can easily see using both of these features to kickstart a new terrrain. Find the right perlin domain as a first-draft, then allow hand-modifications to the heights (optional), then auto-apply splat maps chosen from a set of “biome” presets, then allow more hand-modifying after that.

Years ago, I saw a simple C program on a SGI workstation that create a Perlin field, then ran a straightforward “rain simulation” to create realistic natural erosion patterns. The mountains went from rounded to crisp I really wish I had a copy of that old demo app, to recreate the erosion math.

You could definitely do the splat-maps thing, but of course it would be a lot more work to set up. You’d likely also want to do tri-planar mapping, at least for the slopes. Once you let go of the constant realtime generation, you can go nuts with all kinds of post-processing and manual edits as well. I really had to limit myself for this demo.

This demo has been updated under the hood with the release of NumberFlow 1.1.

The old version used two diagrams to generate the terrain. One to create the height field and another to add the normal map. The new version no longer needs the second diagram, as you can now directly convert height data to normal maps. So the functionality is exactly the same, it’s just a much simpler project now and it performs better too.