24 comments

[ 5.4 ms ] story [ 52.3 ms ] thread
Wow, this looks incredibly good considering that the solution for hiding the seams is just to blend things together with a noisy gradient. (EDIT: Or I've misunderstood how it works!)

I assume it works a lot less well on more isotropic textures (e.g. what does wood grain look like?) than on the examples presented here.

What do pathological cases look like?

I'm also curious how this would work with a regular grid instead of hex-tiled. That is, if you blended the seams and randomly rotated each square as they do with hex-tiling, would it still look good?

And are they splatting a random hexagonal sample from a repeating tiled plane, or are they splatting the exact same image, but arbitrarily rotated? That is, are they using the fact that the image tiles cleanly or does this technique completely obviate the need to use a tiled image?

> Using hex-tiling allows us to hide the repetition but requires a solution to hide the seams between adjacent hex tiles.

I don't understand this part. If I use square tiles and hide the seams between adjacent tiles, will it look OK? What's the benefit of using hex tiles?

You don't get the typical visual repetition of features along X/Y lines
You could use world position (or just some non-uniform sampling) to offset the UVs and get a similar effect, no? Is hex significant or is it just one of any number of ways to break up the uniformity?
> If I use square tiles and hide the seams between adjacent tiles, will it look OK?

Square tiling is very obvious, as you can see from the first example [0]. Hex tiling shifts tiles to a less obvious pattern. Also, as I can see from the video, tiles can be rotated while hiding the seams perfectly, which eliminates repetition altogether.

0. https://github.com/mmikk/mmikk.github.io/blob/master/picture...

Is that first example comparing squaring filing with the same _fixed_ rotation for each tile versus hex-tiling with random or otherwise varying rotation?
Also, a relevant project Wave Function Collapse[0] [0]: https://github.com/mxgmn/WaveFunctionCollapse
The author has a newer project, too, MarkovJunior[0], which generalizes to the combination of WFC with arbitrary cellular automata and grammar-substitution-like types of rules, with probabilistic inference robust enough to be able to e.g. solve sokoban levels in addition to generating stunning random results.

[0]: https://github.com/mxgmn/MarkovJunior

You may also enjoy this post originally from The Witness game dev blog: The Nebraska Problem. It’s about how to arrange a series of sprites to avoid visible seam patterns in between them.

https://news.ycombinator.com/item?id=7692332

Anyone have an elevator pitch of the dithering technique? Is it consistent across mip levels and camera angles? Does it take samples or is it just math?
Nice, but the example is unfair, you can make rect tiling look just as good.
With a single texture and without wasting a bunch of performance modifying/filtering it on the fly? How exactly? Would make a great addition to this discussion :)
I wonder if having a single texture and randomly rotation it with blending the edges on a square grid would look just as good or not. The texture would just have to be larger than the tile it covers
Hex grids are the dual of triangle grids, right? Does the approach here also apply to triangle grids?
I think the "gradient around the edges" of the tiles might work better with hexagons than triangles
Are there any popular game mods implementing hex tiling in originally square-tiled games? A lot of classics, like Skyrim, should look a lot better when viewing tiled surfaces at a distance.
The key improvement here is not in the tile shape, but from random rotation of the textures and blending of tile edges.