Thursday 21 February 2019

Deadly Sins of Texturing

The Seven 17 Deadly Sins of Texturing

What is good texturing? There are so many rules and exceptions to the rules and so many subjective factors to take into account. The only universal rule is:

Keep the number of pixels and number of textures as low as possible.

But what is possible? We can argue about that for ages and never agree.

Even so, there are some mistakes that are so clear and obvious you just don't make them, at least not if you want to be taken seriously as a skilled content creator. Here are some of them. I have a feeling this list will grow over time...

1. Repeat inflation

This is sadly a common practice for many commercial texture merchants. You take a 512x512 texture and copy and repeat it to make a 1024x1024. The reason they do this, is that 1024 textures tend to sell better to ignorant builders than 512's. Apart from that, it's completely pointless. We have a perfectly good built in texture repeat function that does exactly the same without increasing the lag.


2. Resolution inflation

This is another trick used by texture merchants to fool customers into believeing their textures have higher resolution. It's simple, take a 512x512 - or even a 256x256 - and scale it up before you upload. It won't increase the amount of details or the quality but it looks good on the MP listing page.


3. Colour inflation

This is only a deadly sin under certain circumstances,so read on!

The third common merchants' cheat is to do quick-and-dirty recolouring in a graphics program before uploading. It's an easy way to boost your selection of merchandise.

Now, don't get me wrong here: a proper recolouring that takes into account that different parts of the texture needs different treatment, makes a lot of sense. It's only a deadly sin when they add a flat tint all across the texture because that is much better done inworld with the colour tool.


4. Excessive resolution

As I said in the introduction, we can discuss forever how high the resolution needs to be so this isn't necessarily a deadly sin. But there are some cases so extreme there simply is no excuse for them.

Like a certain well known and prestigious maker who use 1024x1024 textures for the shadow prims underneath his meshes. I don't care how much you sell or how good a designer you are. If you make mistakes like that, you don't know how content in a virtual reality works and you have no right to call yourself a builder.


5. Monochrome textures

This is a special case of nos 3 and 14: a texture with the same colour all over it. We have a default blank texture and it can be retinted to a million different colours. Use that instead.


6. Quasi-baking

Baked textures add a lot of lag, not because they are laggier as such, but because they aren't very reusable so we need custom textures for each and every object.

It can be worth it though because it allows us to add far more details. But sometimes we see "baked" textures that are nothing but a UV map superimposed onto a repeated texture. Don't you ever do that!


7. Empy UV maps

Aka "The Blender Bake Fail".

Baked textures where most of the texture surface isn't used at all.


8. Multiple copies of the same texture

Each copy has to be donwloaded separately and stored separately. Do I have to say more?


9. Mirrored textures

A special case of no. 7: two textures that are exact mirror copies of each other. We do have a built in mirror function, you know...


10. Hidden textures

Textures only used on surfaces hidden inside the object. They have no function whatsoever but they add to the load.

It's acceptable for temporary builds but if it's something you're going to keep, maybe even distribute, clean it up. It only takes a minute.


11. Uneven texel density

Some part of a scene have very high texture resolutions, others much lower. This actually reduces the overall visual quality because the contrast itself becomes an eyesore.

This isn't always a deadly sin because a scene is usually built from multiple objects that weren't specifically made to work with each other and in those cases, it can't be blamed on a single person.


12. Atlas abuse

A texture atlas is a single texture that is made from several smaller ones merged into one file. It is a brilliant idea when done well because it can significantly reduce the number of textures used.

But it only makes sense if all (or at least most of) those smaller textures are actually used in the same scene. If not, it's a deadly sin.


13. Rougue alphas

Rougue alphas come in two different flavours: alpha channel added to texturs with no transparency and transparency added only to the unused parts of a (usually baked) texture.

This is a special one bcause many image editors (like GIMP and Photoshop) have the habit of adding alphas to textures whether you need them or not so it can be very hard to avoid doing it by accident. So don't feel guilty if you do it every now and then. It's only a Deadly Sin if you keep doing it all the time.


14. Custom full transparency/blank textures

A special case of no. 8. We have one default fully ransparent texture and one default blank, both at a nice and low 32x32 resolution. We do not need more than that.

Except if you want to shave off a tiny little bit of lag by using textures with even lower resolution that is.


15. Noisy emptiness

This applies to alpha cutout textures and baked textures. These textures will always have parts that are not actually seen and sometmes these parts are full of different hidden colours. This can increase their file size and thus download time considerably and that's not a good idea, is it?


16. Textures for geometry

This is a tricky one because there is no hard rule here. Texture pixels is nearly always a more important cause for lag than mesh triangles and vertices. Usually you need to be able to get rid of hundreds, even thousands, of tris to justify adding a single extra texture. So be careful if you try to save on geometry by adding textures and/or normal maps! Unfortunately Second Life's land impact algorithm doesn't know this. It penalizes extra tris heavily and completely ignores texture pixels.


16. Preloader abuse

I think I'll quote a comment by Dom Daddy on the Second Life forums here. He said it so well:

"people who put all of their textures on a prim inside the pants so that when they use the HUD it 'loads faster'... but makes everyone around them load 50+ 1024's while they are wearing a simple pair of jeans"

There are some very rare situatins when preloading textures is necessary or even good for the perceived performance but it only applies if it's almost certain those textures will be needed very soon and even then, think twice before you add a preloader.

No comments:

Post a Comment