I hope this thread helps shed some light on the subject of building grayscale texture libraries that aid in game development workflows. It's important to note that I make a lot of generalizations about how these types of textures are utilized, and your needs may differ.
[2/10]
For games, we commonly rely on 8-bit texture formats. 16-bit formats are recommended when building source files, but require additional consideration when being utilized at runtime. For now we'll be focusing on 8-bit.
[3/10]
One of the most essential things to understand about 8-bit grayscale textures is that they only support 256 unique values, from 0.0(black) - 1.0(white)
[4/10]
One potentially useful way to imagine this is if you create an 8-bit 1024x1024 linear-gradient grayscale texture, it can only provide you with 256 values. Meaning each value will have to repeat 4 times horizontally to fill the texture. (256x4=1024)
[5/10]
With this in mind, it can be greatly beneficial to utilize the full range of value in your textures. Not just for the sake of quality but also to trust that your textures are consistent across any desired implementations from project to project and person to person.
[6/10]
A library of consistent noise textures can greatly improve the process of artistic exploration while you are looking to formulate new visuals.
[7/10]
For example: If you build a material that references a texture storing a full range of values, you can make confident decisions about how to interact with those values from 0.0-1.0, and swap it with other full range textures knowing that they will all function equally.
[8/10]
On the flip side, if you were to have built that same material with a texture that is 80% of the full range, you may have to introduce additional logic to support that single texture. This can risk increasing shader cost, limit potential workflows, and cause confusion.
[9/10]
Here are two examples of non-ideal textures, both of which only use a fraction of the full 8-bit range. Even though they look similar in pattern, their resulting interaction with material logic would be different and error prone without manual effort to adjust for each.
[10/10]
Here is a link to download an 8-bit 2048x2048 version of this noise that follows the principals discussed so far: dropbox.com/s/a9qq0u8b7if1…
[Bonus]
Sneak peak into next thread where I will start covering tools and techniques to quickly test the quality and consistency of your textures.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
This thread focuses on the balance and evaluation of values distributed in a texture, which can be equally important when building versatile noise libraries.