This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ASTC codec LDR compression bug

When compressing certain textures with ASTC LDR we get corrupted results.

Source image:

lightmap_table-evening.png

Source image (1024x512 lightmap) can also be found attached to post or downloaded here:

https://dl.dropboxusercontent.com/u/7197208/images/lightmap_table-evening.png

When compressed in LDR Linear mode we get corrupted result: top part (2/3rds of image) is clear white and in the bottom source image is repeated 3 times:

bug_mipmap0_combined.png

When trying to compress image in LDR SRGB we get the following error:

error.png

Image is compressed correctly only in HDR mode.

This does not happen with other images, only certain ones  (black-and-white lightmaps) are affected by bug.

Tested on Mali Texture Compression Tool versions 4.2.0 and 4.1.0.

Bug prevents us from using compressed ASTC textures in our Android app, its a shame because it provides excellent quality compared to ETC2 full of block artifacts.

Parents
  • Hi, it looks like this is a "feature" of astcenc, which TCT uses internally. astcenc uses the DirectX coordinate system (where 0,0 is at the top left of the image), so it will invert the image before compressing it, and invert it back again when decompressing it. This is different to other compressors, like etcpack, which do not do this.

    You can rest assured that this is NOT a hardware issue. The way to deal with this problem is, as you have been doing, to manually invert your image before compressing it. We recommend using a tool like ImageMagick to automate this. This fix will work on all hardware that supports ASTC (we've tested it on a Galaxy Note 4 and an Nvidia Shield), and will allow you to use the same shader code to sample from ASTC textures as well as ETC1 or uncompressed textures.

Reply
  • Hi, it looks like this is a "feature" of astcenc, which TCT uses internally. astcenc uses the DirectX coordinate system (where 0,0 is at the top left of the image), so it will invert the image before compressing it, and invert it back again when decompressing it. This is different to other compressors, like etcpack, which do not do this.

    You can rest assured that this is NOT a hardware issue. The way to deal with this problem is, as you have been doing, to manually invert your image before compressing it. We recommend using a tool like ImageMagick to automate this. This fix will work on all hardware that supports ASTC (we've tested it on a Galaxy Note 4 and an Nvidia Shield), and will allow you to use the same shader code to sample from ASTC textures as well as ETC1 or uncompressed textures.

Children