#Gamedev texture tips for new artists. A thread.
Texture making goes beyond painting pretty, there are some things you should know about to get solid results in the engine.
First up, work in powers of 2. This is the fastest way to throw textures around as they fit into the binary nature of graphics cards, memory etc.

You should be able to reel off 16,32,64,128,256,512,1024, 2048.
Textures go through several processes before they get to your screen as a texel.
Compression, filtering, MIP mapping and then lighting and post processes like grading.
Each step of the way, your little grid of colors is translated and chewed up a bit. So the first thing you need to have is a fast round trip to seeing your texture in game.
Textures, therefore usually need to be a lot sharper than you think they do when you first start.

Your soft blending and heavy anti-aliasing looks great... but it then gets scaled, filtered and often antialiased. So... yeah... chewy.
A quick way to get control is to do the texture importing yourself, and get to know the settings for your engine.

Unreal lets you tweak the crap out of texture contrast, saturation and compression.

Unity is... well... it has some settings.
When you bring in a texture, you need to think about what it is used for. Color images (diffuse, albedo, main color etc) have an SRGB curve applied to them.

Maps storingg data, such as Specular, ambient occlusion and height should have SRGB turned OFF immediately.
SRGB is the equivalent of having gamma correction applied. You don't want this with data. A specular value of 0.5 grey should be 0.5, not fucked with by gamma. This is why your models don't dark and dry when you apply your materials. Turn off SRGB. You're welcome.
Normal maps should be flagged as normal maps. This changes the compression to not dick around with the direction each normal points.

Most engines automatically do this, but if something looks weird, check the flagged type.
Next up, compression. Unreal by default uses a very specific compression type that favors the green channel. This is why we pack roughness data into the green, as it needs the least compression.
The alpha is compresed less too, making alpha the same cost as the R,G and B added
My advice is import at double size and immediately tell your engine to turn down the max texture size by 1. So for a 1024 image, import 2048. For 256, import 512. Etc.

Why? Because it gives you the option to up map res later on without reauthoring.
Textures should avoid pure black due to the multiple of zero being zero.

0 is black. 0.01 is NOT black.

0 x1000 is 0.
0.01 x 1000 is 10

0x100,000 is still 0
0.01 x 100,000 is 1000

Avoid true zero (except in masks, obviously)
See? Not just pretty paintings.
Textures are, ultimately, data. A grid of numbers. An array.

The more data you store, and throw around, the more resources you take up.

The trick is to do as much with as little as possible.
Do how you use that data can be smart. Like this classic use of swapping the cloud colors to make bush in mario.
This is an example of, essentially, a mask. A texture that the shader can use to fill data in with.

"Okay, this stuff is clothing."
"This stuff is where the rust or dirt goes"
"This bit is where team colors go"
Here is Jakob, one of the characters I made for Unreal 2004. Each character had several variants and each of those had team colors. Here is a bonus unused variant (orange and grey). The team colors could have easily been masked on grey, then tinted a color by the shader.
These days, we would not only mask colors but entire materials that we combine in the shaders. This means very little texture data works hard at giving us results.

Textures are big blocks of data, remember. The less the better.
Okay, so why not map the same bits of texture all over the models? Like have flat bits and edge bits etc.

Well, we do. But something you need to know is every seam in your UV map essentially splits that edge under the hood. You are effectively upping your polycount.
So, you have to balance fast rendering with texture size. And level loading speeds too. And texture streaming.

Again, pretty painting just won't cut it.
Here are some hand painted maps I made some fifteen years ago. Some from mods (quake 2 Doom) some from cancelled xbox mmog citizen zero.
These days I use Substance Designer, Painter and alchemist as well as Maya, 3dsMax and Zbrush to make textures. This is gives me much more power and flexibility in the titles I work on as I blend geo, smart materials and graphs to make my maps.
Being able to mix textures you paint with procedurally generated textures as the game loads is extremely powerful.

For example, an SBSAR can read in black and white text images and switch out the writing on these textures for localization.
In Where The Wild Things Are, my job was Carol's textures at Animal Logic. I did the textures in photoshop and deep paint. I lovingly, meticulously reproduced the hand painted glass eyes the Creature
Workshop made using dozens of color calibrated Raw images.
To do this, I had to calibrate the images into the right color space then loiter at the compositors desk checking the match at the end.

The reason I bring this up is just whacking on chopped up photos of the puppets would not reproduce the effect in the film.
I had to compensate for our renderman pipe, sharpen, layer up depth and reconstruct.

But I fucking adored every pixel of it. I loved that book as a kid and Carol was my fave wild thing.
Whacking a photo on, however, does sometimes work in distant stuff. I mean, the dude next to me working on the monorail in The Spirit made all the passengers cut outs of himself dressed up in whacky shit pulling faces.

Did you notice?

But... yeah... a photo is NOT a texture.
Especially now we use PBR (physically based rendering) in games. You can go OUT OF RANGE in your painting, so substance have a handy pbr validate check.

Also note materials like have real world values you can look up.
Side note, I had a huge disagreement with Brenden McNamara over photos not being textures, which is why I turned down art directing L.A Noir.

This is me dodging that bullet.
You take a photo of someones eye or teeth then jam that on a model? No ambient occlusion. The teeth seem to glow and the eyes are too white.

But noooooo.

Aaaanyway. Photos are not textures, kids. Just say no.
If you wanna be a kick ass texture artist, you should dip into making shaders. This will give you the power to combine that data I was telling you about in interesting, powerful and cheap ways.

Example? Breaking up tiling on landscapes, making details you can get right up to.
Aha, just found the team skins for Jakob I did. 13 years ago now. Yikes.
You can follow @delaneykingrox.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: