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 подходит для изображений и текстур с плавным, постепенным изменением альфа-канала.
Если , то шесть других альфа значения вычисляются таким образом, что , , , , , и .
В противном случае, если , четыре альфа значения рассчитываются таким образом, что , , , и где и .
Сравнение форматов 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 предусматривает сжатие с потерями).
См. также
- Сжатие текстур
- Текстурный атлас
- Альфа-канал
- 3Dc[англ.]
- FXT1[англ.]
- DirectDraw Surface
- PVRTC
- ASTC[англ.]
- ETC1[англ.]
Примечания
- ↑ Божко А. Н. Жук Д. М. Маничев В. Б. Компьютерная графика. МГТУ им. Баумана-2007, 418стр. (неопр.) Дата обращения: 25 июня 2015. Архивировано 26 июня 2015 года.
- ↑ Fixed-rate block-based image compression with inferred pixel values
- ↑ 1990 IEEE Color Cell Compression Paper (неопр.). Ieeexplore.ieee.org. Дата обращения: 25 января 2012.
- ↑ Сжатие Текстур (неопр.). Дата обращения: 23 июня 2015. Архивировано 23 июня 2015 года.
- ↑ ISSN:2248-9622 Vol.3,Issue 2,April 2013,pp.1381-1385 3D Graphic Texture Compression And Its Recent Trends. (неопр.) Дата обращения: 25 июня 2015. Архивировано 24 сентября 2015 года.
- ↑ 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