Wednesday, April 21, 2010

ATI2 to DXT5 conversion

Unigine uses ATI2 (BC5) texture compression for normal maps. PlayStation3 doesn't support this compression. But after fast bit rearranging we can obtain DXT5 texture with acceptable quality. And it's much better than uncompressed textures :)

2x zoom

3 comments:

  1. Здравствуйте!
    А Вы не собираетесь написать небольшую статью/заметку о быстрой конверсии BC5->DXT5 ?
    Мне например очень интересно.

    ReplyDelete
  2. Полагаю, что примерно так:

    BC5 это два канала, закодированные как альфа в DXT5 - т.е. два 8-битных опорных значения, и 16 3-битных масок интерполяции.
    В DXT5 цвет кодируется двумя 565 опорными значениями и 16-ю 2-битными масками интерполяции.

    Один канал сохраняем, во втором 3-битные маски заменяем на двухбитные, выкидывая последний бит (это чуть-чуть bit shifts и and/or), 8-битные опорные значения заменяем на 6-битные, формируем два цвета с r=b=0, все.
    В шейдере в каналах .ga - наши данные.

    ReplyDelete
  3. Именно так и есть :)

    ReplyDelete