Hacker News new | past | comments | ask | show | jobs | submit login
Practical Real-Time Hex Tiling (github.com/mmikk)
188 points by adamrezich on July 18, 2022 | hide | past | favorite | 24 comments



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


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


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?


Here are some of the original papers for the technique. Although I believe there have been some updates and improvements since.

https://hal.inria.fr/hal-01824773/file/HPN2018.pdf https://www.jcgt.org/published/0008/04/02/paper.pdf


> 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?


> 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?


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?


In practice, yes, it's very common to use a shader to sample the texture with some rotation and noise. Most games have a shader level implementation to address this, and we've done that for a decade at least.

See: https://iquilezles.org/articles/texture repetition/ for a good breakdown on some techniques.


the URL should have been https://iquilezles.org/articles/texturerepetition but this is indeed a great resource


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


In another comment this was linked: https://iquilezles.org/articles/texturerepetition/

It does waste performance, that's unavoidable.


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.


Same dev responsible for http://www.mikktspace.com/ I believe.

Do they still work for Unity?


They still do, yes.


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?


The key improvement here is not in the tile shape, but from random rotation of the textures and blending of tile edges.


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




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: