Build a flat ring from per-vertex points — for low-volume producers and tests; the hot decode/cache paths fill xy/z directly from their source coordinates.