9 ms·
Practical Real-Time Hex Tiling
- jstanley 4y agoWow, 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?
- lattalayta 4y agoHere 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://hal.inria.fr/hal-01824773/file/HPN2018.pdf https://www.jcgt.org/published/0008/04/02/paper.pdf https://www.jcgt.org/published/0008/04/02/paper.pdf
- Pxtl 4y agoI'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?
- billconan 4y ago> 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?
- pugworthy 4y agoYou don't get the typical visual repetition of features along X/Y lines
- jayd16 4y agoYou 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?
- carbadtraingood 4y agoIn 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 https://iquilezles.org/articles/texture repetition/ for a good breakdown on some techniques.
- adamrezich 4y agothe URL should have been https://iquilezles.org/articles/texturerepetition https://iquilezles.org/articles/texturerepetition but this is indeed a great resource
- rootlocus 4y ago> 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/pictures/hex_demo/colorhextiling.png https://github.com/mmikk/mmikk.github.io/blob/master/picture...
- BeeOnRope 4y agoIs that first example comparing squaring filing with the same _fixed_ rotation for each tile versus hex-tiling with random or otherwise varying rotation?
- max_ 4y agoAlso, a relevant project Wave Function Collapse[0] [0]: https://github.com/mxgmn/WaveFunctionCollapse https://github.com/mxgmn/WaveFunctionCollapse
- Llamamoe 4y agoThe 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 https://github.com/mxgmn/MarkovJunior
- teej 4y agoYou 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 https://news.ycombinator.com/item?id=7692332
- jayd16 4y agoAnyone 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?
- ajuc 4y agoNice, but the example is unfair, you can make rect tiling look just as good.
- capableweb 4y agoWith 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 :)
- agweber 4y agoI 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
- hypertele-Xii 4y agoIn another comment this was linked: https://iquilezles.org/articles/texturerepetition/ https://iquilezles.org/articles/texturerepetition/ It does waste performance, that's unavoidable.
- kibwen 4y agoHex grids are the dual of triangle grids, right? Does the approach here also apply to triangle grids?
- adamrezich 4y agoI think the "gradient around the edges" of the tiles might work better with hexagons than triangles
- l0b0 4y agoAre 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.
- andybak 4y agoSame dev responsible for http://www.mikktspace.com/ http://www.mikktspace.com/ I believe. Do they still work for Unity?
- username256 4y agoThey still do, yes.
- pornel 4y agoThe key improvement here is not in the tile shape, but from random rotation of the textures and blending of tile edges.