The previous post was mostly devoted to the Fluvial Network calculation and rivers rendering was not covered enough. I stayed on the straightforward and even unexpected solution: draw rivers based on their length only. It’s rather elegant, but tributaries don’t increase the main stem volume and this may be a problem. In real world tributaries usually don’t do it too, at least not in a direct way. But from a world-building perspective my implementation looks a bit boring. I want rivers to be not so predictable.

The problem is that we had amended rivers with bends and rivers’ control points don’t coincide with map polygons anymore. Usually we have 3 river elements for a polygon, so we need to interpolate the related polygon’s flux to have different width for each element.

Another solution is to combine flux and length approaches. On a regular stream width should get constantly increasing based on length, but on confluence river width should be completely recalculated based on the polygon’s flux value.

Continue reading “Confluences”


River systems

Now it’s a good time to draw some rivers. As we already have a heightmap we do not need to fabricate rivers out of nothing and will calculate river systems based on precipitation drainage.

The first step is to build a precipitation model. Frankly speaking, we can omit this step and consider that each cell has the same precipitation. It will be enough to create plausible rivers, but having a precipitation model is useful not only for rivers calculation, but also for biomes and erosion modeling.

The most interesting precipitation model I know is the Wind model presented by Scott Turner. Here he shows how it can be easily used for biomes definition and here disclose a few info regarding rivers. Despite this model is cool, it’s a bit over-complicated for a landscapes created via blobs approach and requires more detailed map.

Continue reading “River systems”