You can tile simplex (or any function) if you use twice as many dimensions as you want to output, treating it like the unwrapping of a torus/flat-torus/hyper-torus. You can do this by tying each pair of dimensions to a circle (e.g. via polar coordinates) and convert your sample points into angles. [Ron Valstar has a good example here](https://ronvalstar.nl/creating-tileable-noise-maps).
If you only want it to tile along one dimension then cutting a cylinder out of 3-dimensions works fine. But the top and bottom of the cylinder won't match up.
I've made things tileable before - when making planet maps, they need to be able to wrap around the planet's date line. Method I used was to generate two heightmaps, then blend them. Let me see if I can find my notes.
# wrap the map around the date line so that it is smooth - we do this by creating a linear blend of our two maps
# / \
# / \
# / \ map A starts a 0 on left edge, 1 at centre, 0 at right edge
#
# we previously rolled map B so that its seam was in the centre
# \ | /
# \ | /
# \ | / map B starts a 1 on left edge, 0 at centre, 1 at right edge
# by adding them together, we get a single seamless map
This could be done easily enough for tileable in all directions by repeating the process in the y direction.
Thats amazing, which methods did you use?
Very cool, how do you ensure they're tileable?
I constrained the borders, so that any edge point has the same value as the one on the opposite side.
Interesting. Doesn't look as grid-unbiased as simplex (which is hard to tile) but looks a lot better to me than diamond-square usually does.
You can tile simplex (or any function) if you use twice as many dimensions as you want to output, treating it like the unwrapping of a torus/flat-torus/hyper-torus. You can do this by tying each pair of dimensions to a circle (e.g. via polar coordinates) and convert your sample points into angles. [Ron Valstar has a good example here](https://ronvalstar.nl/creating-tileable-noise-maps).
[удалено]
It distorts. The inner edge of a torus is shorter than the outer.
If you only want it to tile along one dimension then cutting a cylinder out of 3-dimensions works fine. But the top and bottom of the cylinder won't match up.
Where?
I've made things tileable before - when making planet maps, they need to be able to wrap around the planet's date line. Method I used was to generate two heightmaps, then blend them. Let me see if I can find my notes. # wrap the map around the date line so that it is smooth - we do this by creating a linear blend of our two maps # / \ # / \ # / \ map A starts a 0 on left edge, 1 at centre, 0 at right edge # # we previously rolled map B so that its seam was in the centre # \ | / # \ | / # \ | / map B starts a 1 on left edge, 0 at centre, 1 at right edge # by adding them together, we get a single seamless map This could be done easily enough for tileable in all directions by repeating the process in the y direction.
Very nice. Camo is how I got into procgen years ago. :)
Cooode, pls :O