Normal map compression artefacts
Let’s say you have rendered a normal map from a high poly to a low poly model in software like Substance Painter, and want to use it in ShiVa. Your model inside Substance looks very smooth:
But when you import the textures into ShiVa, you are noticing some strange patterns which, depending on the model, may not be visible at all, or destroy the entire look of the object. Since the artifacts are only visible under specular lighting, you suspect there might be something wrong with your specular map:
This has in fact nothing to do with specular mapping, even though it seems that way. The real culprit is the normal map compression, which is enabled by default.
All textures in ShiVa 2.0 have to choose between three quality settings:
– Compressed 16bit: default, best size to quality ratio, but produces color artifacts
– Uncompressed 16bit: still reduces color depth, but no compression
– Uncompressed 32bit: full quality, biggest file size
Color reduction and compression is not a problem on flat, angular normal maps, like technical paneling on a flat level wall, but as soon as smooth round surfaces have to be calculated which are represented as gradients in the normal map, artifacts are unavoidable in 16bit compressed mode. Luckily, it is very easy to switch between the modes:
Using uncompressed normal map, we restored the car from looking like this…
Since uncompressed normal maps look so much better, why not use them all the time? Mostly because of size and memory constraints. Compressed 16bit textures only take up a fraction of storage space and graphics memory, so especially if you are working in an environment where such things are at a premium, like web and mobile content, or older PCs and consoles, you should think hard about where uncompressed maps are really necessary. More often than not, the compression artifacts are barely noticeable, especially on flat angular surfaces, or because the player camera is far enough away, so the trade-off between size and quality is often worth it.