I'm creating a voxel (block, Minecraft like) game and I have different biomes (flatland, mountains, ect) and the problem is they are abrupt changes when biomes end /begin. I'm using 3d perlin noise, so I can't just "average out" the heights. So I thought to make rivers when biomes end /begin. Does anyone know how I could do this, or how it could work? With 3d noise I get very nice features, however the noise represents density rather than height, so I'm not sure how to go about doing "weight" and such. If not, how can I do blending with 3d perlin noise? Many thanks in advance. I'm also wondering of how Currently, for each chunk of the world I have a certain chunkGen set, and when the biome changes (randomly determined) the chunkGen changes. Even if I were to generate on a block by block basis, I'm not exactly too sure how that could help me as the 3d perlin value I'm getting is of density. I think my best bet would be using 2d perlin with 3d perlin, the 2d for height and the 3d for ridges but I have no idea of how to implement this. Would it also be possible to create a buffer terrain between the biomes? with the averages of the octaves, gain, frequency? EDIT: I've actually just tried buffer terrain but it doesn't work well, often enough it moves up randomly or happens in the middle of lakes.