S3TC
S3TC (S3 Texture Compression) (иногда также называют DXTn или DirectX Texture Compression - DXTC) - метод Сжатие данных с потерями, Сжатие текстур, первоначально разработанный Iourcha и др. из . S3 Graphics, Ltd[1]для использования в Savage 3D компьютерном графическом ускорителе. Метод сжатия поразительно похож на ранее опубликованный Color Cell Compression[2]. DXTC - это формат сжатия текстур с потерями, с фиксированным размером выходных данных. Благодаря алгоритму сжатия, формат S3TC стал широко использованным форматом сжатия текстур для трехмерной компьютерной графики с аппаратным ускорением. После интеграции S3TC в состав Microsoft DirectX 6.0 и OpenGL* 1.3 этот формат сжатия получил исключительно широкое распространение. Существует не менее 5 разновидностей формата S3TC (от DXT1 до DXT5 включительно). В образце поддерживаются часто используемые разновидности (DXT1, DXT3 и DXT5). [3]
Кодеки
DXT1
Формат DXT1 из всех разновидностей S3TC обеспечивает самое сильное сжатие: каждый блок из 16 пикселей преобразуется в 64 бита. Также используются два различных 16-битных значения цветов RGB (5:8:5) и 2-битная таблица подстановок 4х4. DXT1 не поддерживает альфа-каналы.
DXT3
При использовании формата DXT3 каждый блок из 16 пикселей преобразуется в 128 бит: 64 бита данных альфа-канала и 64 бита данных цвета. Формат DXT3 прекрасно подходит для изображений и текстур с резким изменением альфа-канала, т.е. прозрачности.
DXT5
При использовании формата DXT5 каждый блок из 16 пикселей преобразуется в 128 бит: 64 бита данных альфа-канала и 64 бита данных цвета. Формат DXT5 прекрасно подходит для изображений и текстур с плавным, постепенным изменением альфа-канала.
S3TC Format Comparison
FOURCC | DX 10 Name | Description | Alpha premultiplied? | Compression ratio | Texture Type |
---|---|---|---|---|---|
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 предусматривает сжатие с потерями).
- Поддерживается не всеми устройствами на базе Android.
Программные средства для сжатия
DirectX Texture Tool from DirectX (included in the DX SDK)[4]
Доступ к данным текстур
В большинстве форматов сжатия текстур существует заголовок, который находится в файле перед данными. В заголовке обычно содержатся сведения о формате сжатия текстур, высота, ширина и глубина текстуры, размер данных, внутренний формат и прочие свойства файла. Наша задача — загрузить и наложить данные текстуры из каждого файла (с различным форматом сжатия) на двухмерную модель для сравнения качества и размера файла. При этом заголовок, находящийся перед данными, не следует накладывать на модель вместе с текстурой, поскольку это приведет к искажениям изображения. Заголовки файлов различаются в зависимости от используемого формата файлов; каждому формату требуется собственная поддержка для загрузки текстур и правильного их наложения.
Заголовок PVRTC упаковывается из-за наличия части данных 64-разрядного формата изображения (в образце — mPixelFormat). ARM пытается выровнять заголовок, добавив в него 4 дополнительных байта, из-за чего заголовок становится размером в 56 байт вместо первоначальных 52 байт. Это, в свою очередь, приводит к искажению изображения на устройстве с процессором ARM. В устройствах с процессорами Intel заголовок не дополняется, поэтому там описываемая проблема отсутствует. Проблема с дополнением заголовка в устройствах ARM решается упаковкой заголовка, после чего текстура правильно отображается на устройствах как с процессорами ARM, так и с процессорами Intel.
См. также
Ссылки
- ↑ Шаблон:Patent
- ↑ 1990 IEEE Color Cell Compression Paper . Ieeexplore.ieee.org. Дата обращения: 25 января 2012.
- ↑ Сжатие Текстур
- ↑ http://www.microsoft.com/en-us/download/details.aspx?id=6812/ DirectX Software Development Kit
Литература
- Microsoft Developer Network article on Block Compression in Direct3D 10
- NVIDIA Texture Tools
- AMD GPU Tools
- squish, an MIT-licensed S3TC compressor. The site also contains an article giving an introduction to compression algorithms.
- libtxc_dxtn, a BSD licensed module for Mesa
- Comparison between S3TC and FXT1 texture compression
- The Truth about S3TC Note: This article used an early S3TC compression engine, not nVidia's or ATI's updated codecs.
- Texture compression survey
- crunch, a ZLIB-licensed DXT1/5/N command line tool and compression library with a highly compressed intermediate format.
- A fast, SSE2-enabled DXT1/5 compressor by Intel