UDN
Search public documentation:
NormalMapFormats
日本語訳
中国翻译
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
中国翻译
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
Normal Map Formats
Overview
Normal formats
CompressionSettings | Texture Format | Channels | Bits per Pixel | Size for 1024x1024 | Comments |
TC_Normalmap | DXT1 | 3(*) | 4 | 512 KB | * It is possible to store 1-bit alpha (mask) in the alpha channel of DXT1 |
TC_NormalmapAlpha | DXT5 | 4 | 8 | 1024 KB | |
TC_NormalmapUncompressed | V8U8 | 2 | 16 | 2048 KB | Because the memory usage is 4x that of DXT1, the engine automatically reduces the resolution by one mip-map, to match the DXT1 footprint |
TC_NormalmapBC5 | BC5 (3Dc / DXN) | 2 | 8 | 1024 KB | Supported on DirectX 10 and Xbox 360, or on ATI cards under DirectX 9 |
TC_Normalmap / DXT1

TC_NormalmapAlpha / DXT5
TC_NormalmapAlpha (DXT5) has identical visual results to DXT1 but also has 4-bits per pixel of compressed alpha channel data to use as a mask. It's better for performance to put a mask you need in a DXT5 texture, rather than sample another texture. But if you put the mask into the diffuse texture, it would allow you to use another format for the normal.TC_NormalmapUncompressed / V8U8

TC_NormalmapBC5 / BC5 (3Dc / DXN)

Material Editor Usage Notes
TextureSample node
Using a normal of any format inside a TextureSample node will work correctly. However, the normal format is only checked when the material's shaders are recompiled. So if you change the normal texture's CompressionSettings without recompiling shaders, the pixel shader code generated might not match. This is similar to the behavior of UnpackMin/Max.TextureSampleParameter2D node
Using a normal of any format inside the default value of a TextureSampleParameter2D node will work correctly. However, any material instance that overrides the default value must have the same CompressionSettings as the default Texture property of the parameter. Like TextureSample, the same warning about changing the default texture's CompressionSettings without recompiling shaders applies.TextureSampleParameterNormal node

Recommendations
- Use TC_NormalmapUncompressed with reduced-resolution instead of TC_Normalmap, if it looks better for your content. The memory usage is the same.
- Use TC_NormalmapBC5 if you are making an Xbox 360 game and you feel the quality difference compared to reduced-resolution TC_NormalmapUncompressed is worth the 2x memory size increase.
- It is recommended you use the TextureSampleParameterNormal material node whenever you need to use a normal map as a parameter.
- You should be consistent with the normal map formats you use with a particular material instance parent, to reduce the number of shaders generated.