An eight-sided tower, worked out
No model file and no texture. The reason the eight sides come out straight is a single line: radius = distance-to-face ÷ cos(angle off the face normal) — zero in the middle of a face, and exactly stretched to the circumradius at a corner. The upward curl of the eaves is calculated the same way: the further from the middle of a face, the higher it lifts. Even the arched doorway on each face is decided, not painted. Storeys, eave reach and curl are all below — drag one and you get a different tower.
Pull "Corner curl" to 0 and every roof turns into a flat cap — that one value is the whole difference between this roof and any other. Push "Eave reach" to the top and it becomes a stack of deep overhanging tiers; pull it in and it reads more like a watchtower. Storeys change more than the height: each tier's radius and its own height are recomputed from the taper, so an eleven-storey tower is not a seven-storey tower with four more stuck on top.