Why does DXT1 compression saturate my lightmaps?

When I import a lightmap and select DXT1 compression (either by script or by selecting it in the Inspector under the 'Advanced' Texture Type), it becomes saturated; all low values go black, all medium to high values go white. Unity defaults to using DXT5 compression for lightmaps, but in my case I'm importing 8-bit grayscale images and the DXT5 compression actually makes the image consume more RAM, not less. The DXT5 compressed lightmap looks correct, but it consumes too much memory.

My understanding is DXT5 supports alpha channels, but my imported lightmaps don't contain any alpha information, so I would think of the two schemes DXT5 would cause problems. Alas, I am wrong.

Any insights?

Actually lightmaps aren't like normal (understand 'usual') textures. They have a much higher range of color and hence are coded on more than 8 bits per color. DXT1/5 compression works only on 8bits per channel textures, so when you apply such a compression on lightmaps, you bork this higher range of colors, and everything gets clamped to a 0-255 range. That's why everything is broken in your DXT1/5 compressed lightmaps.

Leave lightmaps as they are. If they take too much space in memory, reduce the resolution per world unit when you generate them.

I know this is an old question but, FWIW, for opaque-only textures, DXT1 should be better than DXT5 for two reasons:

  1. It has two choices for representations for each 4x4 region (4 colour and 3 colour modes) so there is a chance it might use the 3 colour if that happens to be a better representation. For some reason the additional mode is not officially available in DXT5.

  2. The compression rate is better with DXT1 (@4bpp) than DXT5 (@8bpp).