Maptool: Overlay perlin/gausian noise on tiling textures

Created on 5 Oct 2019  路  19Comments  路  Source: RPTools/maptool

Is your feature request related to a problem? Please describe.
I have brain damage that has left me sensitive to repeating visual patterns, such as tiled textures. The smaller the texture and denser the tiling, the more "abrasive" it feels. I understand neurotypical people find this a little displeasing too, but I have a nails-on-blackboard problem with it.

Describe the solution you'd like
A ticky-box option to Overlay a perlin noise or gausian noise function over textures used with drawing tools, where they will be tiled to fill the drawing tool shape, and a separate ticky-box option to Overlay the same over a map background image, which is tiled to fill your entire screen omg.
This would generate a low contrast, relatively large scale noise function. It should not tile, it should be independent of the tile of the texture underneath.
Using Overlay slightly brightens part of the underlying texture and slightly darkens part of the underlying texture.

The result "breaks up" the repetition of the tiling pattern enough that it feels drastically better for me, and I am informed it is more aesthetically pleasing for neurotypical people as well. The Cartographers Guild recommend it.

I _think_ the best implementation would make it a client-side option in the accessibility settings, so that it can be turned off by people who don't like the effect or find the effect not worth the extra processing overhead. It could default to off as well.

Describe alternatives you've considered
The alternative puts the onus on the GM to create larger tiles and apply the noise function themselves. This results in a) more work and b) larger file sizes for the tiles, and c) if done incorrectly results in seams when the new tile is ... tiled, which nobody likes.

Additional context

Tiling Grass

Tiling Grass with Noise

documentation needed feature tested

Most helpful comment

I have applied an overlay of perlin noise to the background image.
Attached is what the standard grassland background looks like, @Syndaryl can you let me know if this is enough to remove the discomfort or not.

image

If this is enough then I can start working on the scrolling and UI configuration.

I may not even worry about zooming I kind of like how it works at the moment, this next image shows zooming in looks like without the noise being zoomed in, it kind of adds an extra texture, but I am open to what other people think
image

I want to finish off background before tackling textured drawables as thats quite a bit more complicated.

All 19 comments

Sounds reasonable.

I know another thing that was considered, a lot of textures sometimes come with 4-8 "versions" like grass-a, grass-b, etc. An option to select multiple textures when tiling and have it 'randomly" use those tiles may mix things up a bit.

TBH, I have not tried this (manually or otherwise) so not sure if the effect would be desirable or not.

I love this idea!

Since the noise isn鈥檛 part of the tile, it will need to be generated after the tiles are blitted to the image. If the noise isn鈥檛 saved somehow, every refresh of the image would generate different noise, so what happens when the map is being panned?

That would be my concern, given that MT (currently) is "infinite" generating and caching this seems problematic...

Maybe this another case of allowing the map to be limited and restricted to a set size... (as an option) to allow this sort of thing?

And perhaps that鈥檚 okay on the client? How often does the Player increase the size of the map? Perhaps the server sends the campaign to the client who then converts the background image (or tiles) into a fixed size image and adds the noise overlay...?

Perlin noise should work quite well for something like this. It is also deterministic for any set of co-ordinates so unbounded maps should not be an issue.

Cool. Never heard of it (off to visit Wikipedia).

Perlin noise would produce the same result on any client, given the same inputs. You don't need to provide a random "seed" like when generating an actual random number - although you can if you want to in order to produce variations.

Tile randomization would also be good! Both techniques are used in modern videogames to get the benefit of small texture sizes while reducing the visual impact.
I suggested the noise one because it has the least effort required on the part of the GM in order to accommodate someone. Adding in multi-textures would be a great enhancement.

Rather than applying the noise as a separate, possibly CPU/GPU intensive process, why not just check the preferences setting and apply it to the texture before the tiling operation. Would Perlin noise also show obvious repeating patterns if generated just once for the tile texture?

Rather than applying the noise as a separate, possibly CPU/GPU intensive process, why not just check the preferences setting and apply it to the texture before the tiling operation. Would Perlin noise also show obvious repeating patterns if generated just once for the tile texture?

Applying the noise just once to the texture before they tiling operation unfortunately wont help as you are just darkening/lightening the existing pattern which means you would still be laying down a repeating pattern, and for tilesets where the existing pattern is subtle and not really noticeable you could even make the situation worse by introducing a new pattern which is.

I was afraid of that.

I have applied an overlay of perlin noise to the background image.
Attached is what the standard grassland background looks like, @Syndaryl can you let me know if this is enough to remove the discomfort or not.

image

If this is enough then I can start working on the scrolling and UI configuration.

I may not even worry about zooming I kind of like how it works at the moment, this next image shows zooming in looks like without the noise being zoomed in, it kind of adds an extra texture, but I am open to what other people think
image

I want to finish off background before tackling textured drawables as thats quite a bit more complicated.

Am I the only one who thinks the default delta of .2 is too much noise? It blurs the details dramatically and the texture is almost unrecognizable.

I suggest we use a lower delta such as .1

I think we'll probably have it default off and then have a user preference for the values.

@Merudo as Phergus said it will be off by default I need to add that bit. But also the repeating pattern in the grass is so strong the noise also has to be strong to break it up it (which is the purpose of this patch)

This works great, thank you very much. Having an adjustable delta sounds like a good idea - can we have perhaps a slider control? This way people can tweak to their own requirements, which with an Accessibility feature is very important.

Customization leads to Accessibility, accessibility enhances customization for the general populace :)

I'm loving 0.2 myself :)

Latest commits set the noise to off by default and added ability to toggle on/off.

To change, use /texturenoise alpha [seed] or /texturenoise on | off.

/texturenoise by itself will report current values if it is on.

Current Values, alpha = 0.1, seed = 42.

Chat commands page updated on wiki with new info.

Was this page helpful?
0 / 5 - 0 ratings