S3TC

S3TC (S3 Texture Compression)[1] (также называется DXTn или DirectX Texture Compression — DXTC) — метод сжатия текстур, первоначально разработанный Iourcha и др. из S3 Graphics[2] для использования в компьютерном графическом ускорителе Savage 3D.

Метод сжатия поразительно похож на ранее опубликованный Color Cell Compression[3]. DXTC — это формат сжатия текстур с потерями, с фиксированным размером выходных данных. Благодаря алгоритму сжатия, формат S3TC стал широко использованным форматом сжатия текстур для трехмерной компьютерной графики с аппаратным ускорением. После интеграции S3TC в состав Microsoft DirectX 6.0 и OpenGL 1.3 этот формат сжатия получил исключительно широкое распространение. Существует не менее 5 разновидностей формата S3TC (от DXT1 до DXT5 включительно).[4]

Кодеки

DXT1

Формат DXT1 из всех разновидностей S3TC обеспечивает самое сильное сжатие: каждый блок из 16 пикселей преобразуется в 64 бита. Также используются два различных 16-битных значения цветов RGB (5:6:5) и 2-битная таблица подстановок 4х4. DXT1 не поддерживает альфа-каналы.

DXT3

При использовании формата DXT3 каждый блок из 16 пикселей преобразуется в 128 бит: 64 бита данных альфа-канала и 64 бита данных цвета. Формат DXT3 подходит для изображений и текстур с резким изменением альфа-канала, то есть прозрачности.

DXT5

При использовании формата DXT5 каждый блок из 16 пикселей преобразуется в 128 бит: 64 бита данных альфа-канала и 64 бита данных цвета. Формат DXT5 подходит для изображений и текстур с плавным, постепенным изменением альфа-канала.

Если α 0 > α 1 {\displaystyle \alpha _{0}>\alpha _{1}} , то шесть других альфа значения вычисляются таким образом, что α 2 = 6 α 0 + 1 α 1 7 {\displaystyle \alpha _{2}={{6\alpha _{0}+1\alpha _{1}} \over 7}} , α 3 = 5 α 0 + 2 α 1 7 {\displaystyle \alpha _{3}={{5\alpha _{0}+2\alpha _{1}} \over 7}} , α 4 = 4 α 0 + 3 α 1 7 {\displaystyle \alpha _{4}={{4\alpha _{0}+3\alpha _{1}} \over 7}} , α 5 = 3 α 0 + 4 α 1 7 {\displaystyle \alpha _{5}={{3\alpha _{0}+4\alpha _{1}} \over 7}} , α 6 = 2 α 0 + 5 α 1 7 {\displaystyle \alpha _{6}={{2\alpha _{0}+5\alpha _{1}} \over 7}} , и α 7 = 1 α 0 + 6 α 1 7 {\displaystyle \alpha _{7}={{1\alpha _{0}+6\alpha _{1}} \over 7}} .

В противном случае, если α 0 α 1 {\displaystyle \alpha _{0}\leq \alpha _{1}} , четыре альфа значения рассчитываются таким образом, что α 2 = 4 α 0 + 1 α 1 5 {\displaystyle \alpha _{2}={{4\alpha _{0}+1\alpha _{1}} \over 5}} , α 3 = 3 α 0 + 2 α 1 5 {\displaystyle \alpha _{3}={{3\alpha _{0}+2\alpha _{1}} \over 5}} , α 4 = 2 α 0 + 3 α 1 5 {\displaystyle \alpha _{4}={{2\alpha _{0}+3\alpha _{1}} \over 5}} , и α 5 = 1 α 0 + 4 α 1 5 {\displaystyle \alpha _{5}={{1\alpha _{0}+4\alpha _{1}} \over 5}} где α 6 = 0 {\displaystyle \alpha _{6}=0} и α 7 = 255 {\displaystyle \alpha _{7}=255} .

Сравнение форматов S3TC

Таблица кодеков.[5][6]

Идентификатор кодека FOURCC Сжатие блоков Описание Premultiplied Alpha Степень сжатия Поддерживаемые текстуры
DXT1 BC1 1-bit Alpha / Opaque N/A 6:1(for 24 bit source image) Simple non-alpha
DXT2 BC2 Explicit alpha Yes 4:1 Sharp alpha
DXT3 BC2 Explicit alpha No 4:1 Sharp alpha
DXT4 BC3 Interpolated alpha Yes 4:1 Gradient alpha
DXT5 BC3 Interpolated alpha No 4:1 Gradient alpha

Преимущества:

  • Размер файлов существенно меньше по сравнению с PNG.
  • Неплохое качество, мало наложений (артефакты не слишком заметны).
  • Высокая скорость компрессии/декомпрессии изображений.
  • Аппаратное ускорение обработки графическими процессорами реализовано в огромном количестве видеоадаптеров. Аппаратная поддержка применяется практически повсеместно на настольных ПК и постепенно охватывает устройства на базе Android.

Недостатки:

  • Качество ниже, чем при использовании PNG (поскольку формат S3TC предусматривает сжатие с потерями).

См. также

Примечания

  1. Божко А. Н. Жук Д. М. Маничев В. Б. Компьютерная графика. МГТУ им. Баумана-2007, 418стр.  (неопр.) Дата обращения: 25 июня 2015. Архивировано 26 июня 2015 года.
  2. Fixed-rate block-based image compression with inferred pixel values
  3. 1990 IEEE Color Cell Compression Paper  (неопр.). Ieeexplore.ieee.org. Дата обращения: 25 января 2012.
  4. Сжатие Текстур  (неопр.). Дата обращения: 23 июня 2015. Архивировано 23 июня 2015 года.
  5. ISSN:2248-9622 Vol.3,Issue 2,April 2013,pp.1381-1385 3D Graphic Texture Compression And Its Recent Trends.  (неопр.) Дата обращения: 25 июня 2015. Архивировано 24 сентября 2015 года.
  6. MSDN. Block Compression Formats Supported in Direct3D 11.  (неопр.) Дата обращения: 25 июня 2015. Архивировано 1 июля 2015 года.

Литература

  • Microsoft Developer Network article on Block Compression in Direct3D 10
  • Comparison between S3TC and FXT1 texture compression
  • О технологии компрессии текстур S3TC
  • A fast, SSE2-enabled DXT1/5 compressor by Intel