[HN Gopher] Practical Real-Time Hex Tiling
       ___________________________________________________________________
        
       Practical Real-Time Hex Tiling
        
       Author : adamrezich
       Score  : 130 points
       Date   : 2022-07-18 15:53 UTC (7 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | jayd16 wrote:
       | 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?
        
       | max_ wrote:
       | Also, a relevant project Wave Function Collapse[0] [0]:
       | https://github.com/mxgmn/WaveFunctionCollapse
        
       | l0b0 wrote:
       | 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.
        
       | billconan wrote:
       | > 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 wrote:
         | You don't get the typical visual repetition of features along
         | X/Y lines
        
           | jayd16 wrote:
           | 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?
        
             | carbadtraingood wrote:
             | 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.
        
               | adamrezich wrote:
               | the URL should have been
               | https://iquilezles.org/articles/texturerepetition but
               | this is indeed a great resource
        
         | rootlocus wrote:
         | > 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...
        
           | BeeOnRope wrote:
           | Is that first example comparing squaring filing with the same
           | _fixed_ rotation for each tile versus hex-tiling with random
           | or otherwise varying rotation?
        
       | ajuc wrote:
       | Nice, but the example is unfair, you can make rect tiling look
       | just as good.
        
         | capableweb wrote:
         | 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 :)
        
           | agweber wrote:
           | 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
        
           | hypertele-Xii wrote:
           | In another comment this was linked:
           | https://iquilezles.org/articles/texturerepetition/
           | 
           | It _does_ waste performance, that 's unavoidable.
        
       | kibwen wrote:
       | Hex grids are the dual of triangle grids, right? Does the
       | approach here also apply to triangle grids?
        
         | adamrezich wrote:
         | I think the "gradient around the edges" of the tiles might work
         | better with hexagons than triangles
        
       | teej wrote:
       | 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
        
       | jstanley wrote:
       | 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?
        
         | lattalayta wrote:
         | 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
        
         | Pxtl wrote:
         | 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?
        
       ___________________________________________________________________
       (page generated 2022-07-18 23:00 UTC)