I have this terrain I generated using Perlin Noise layers whose colors are applied based on the height of the vertex, just for reference before I am done being clear about how I will implement the biomes in my procedural world


This approach is probably the most simple and consists of creating a temperature map and a moisture map using another Perlin noise with different frequencies and offset in order to get Temperature and Humidity values and then decide the biomes as shown in this post:

So the point is that biomes are more than the ecosystem; tree, animals generation, and ground color... I also want them to have a visible impact on the terrain, for example:

Minecraft biomes

We have different biomes each one with its characteristic topography. So I've made some research and found out that Minecraft's biomes also are made using temperature and humidity: Minecraft biome generation

The problem comes when I have to modify the terrain based on the biome, already decided based on this chart:

I don't know what to do. When it's colder I make the terrain taller? I am really lost. I don't really know how to apply each biome topographical property to the terrain. Also when 2 biomes meet if they have their own topography, they wouldn't be continuous and therefore not procedural anymore. The only solution I could come up with is using a Voronoi noise and interpolating the weights of the influence of each biome making a smooth transition between them, the problem is that I still don't know how to deform the terrain depending on the biome and that Voronoi noise is not procedural; the points have to be computed previously.

  • \$\begingroup\$ While you could do it that way, it's backwards from the approaches I've seen. The typical order is to first create your topography & then determine the biome. Steep mountains happen to be cold because they are at high elevations. It's not the case that cold causes steep mountains. Case in point, in North Dakota the high for today is -15°F (not including windchill) & it's the third flattest state in the US. Similarly, the poles of the planet aren't massive mountain ranges. \$\endgroup\$
    – Pikalek
    Commented Jan 6, 2022 at 16:24
  • \$\begingroup\$ You're right I'm focusing it wrong, but then what could I do to prevent the terrain from looking so repetitive from a topographical perspective? \$\endgroup\$
    – alon
    Commented Jan 6, 2022 at 16:41
  • 1
    \$\begingroup\$ "they wouldn't be continuous" - the answer of mine that you linked to explains how to make them continuous with interpolation. "Voronoi noise is not procedural" - you can compute the points on the fly just like you can compute Perlin noise octaves on the fly. The other answer I link to within the answer you've linked goes into more detail about generating biomes and terrain variation from an initial height map \$\endgroup\$
    – DMGregory
    Commented Jan 6, 2022 at 16:43
  • 1
    \$\begingroup\$ Note that what both these answers describe is running a separate generator for each biome. So you're not just deciding "if cold, add +1 meter per degree below zero". Instead you have one set of noise you've turned to look "forest-y" and one set of noise you've tuned to look "mountain-y" and one you've tuned to look "plains-y" or "marsh-y" etc. You run each of those generators for each of the adjacent biomes, and interpolate the values they give you according to their biome weights. (I'm not posting this as an answer since I've already written two answers that say this) \$\endgroup\$
    – DMGregory
    Commented Jan 6, 2022 at 17:15
  • \$\begingroup\$ So what you mean is using different noises for the biomes to make the terrain look less repetitive and also using the weights to make them continous? That sounds very good! \$\endgroup\$
    – alon
    Commented Jan 6, 2022 at 17:23