S3TC: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 1: Строка 1:
'''S3TC''' ('''S3 Texture Compression''')<ref>[http://msk.edu.ua/ivk/OKM/Z17/Komputernaya_Graphika.pdf Божко А. Н. Жук Д. М. Маничев В. Б. Компьютерная графика. МГТУ им. Баумана-2007, 418стр.]</ref> (также называется '''DXTn''' или DirectX Texture Compression — '''[[DXTC]]''') — метод [[Сжатие текстур | сжатия текстур]] DirectX*, первоначально разработанный Iourcha и др. из [[S3 Graphics | S3 Graphics, Ltd]]<ref>Патент US5956431 |«Fixed-rate block-based image compression with inferred pixel values»</ref> для использования в компьютерном графическом ускорителе [[Savage 3D]]. Метод сжатия поразительно похож на ранее опубликованный [[Color Cell Compression]]<ref>{{cite web|url=http://ieeexplore.ieee.org/iel5/498/3989/00152671.pdf |title=1990 IEEE Color Cell Compression Paper |publisher=Ieeexplore.ieee.org |date= |accessdate=2012-01-25}}</ref>. '''DXTC''' — это формат сжатия текстур с потерями, с фиксированным размером выходных данных. Благодаря алгоритму сжатия, формат S3TC стал широко использованным форматом сжатия текстур для трехмерной компьютерной графики с аппаратным ускорением. После интеграции S3TC в состав Microsoft DirectX 6.0 и OpenGL* 1.3 этот формат сжатия получил исключительно широкое распространение. Существует не менее 5 разновидностей формата S3TC (от DXT1 до DXT5 включительно).<ref>[https://software.intel.com/ru-ru/android/articles/android-texture-compression/ Сжатие Текстур]</ref>
'''S3TC''' ('''S3 Texture Compression''')<ref>[http://msk.edu.ua/ivk/OKM/Z17/Komputernaya_Graphika.pdf Божко А. Н. Жук Д. М. Маничев В. Б. Компьютерная графика. МГТУ им. Баумана-2007, 418стр.]</ref> (также называется '''DXTn''' или DirectX Texture Compression — '''[[DXTC]]''') — метод [[Сжатие текстур|сжатия текстур]], первоначально разработанный Iourcha и др. из [[S3 Graphics]]<ref>{{US Patent|5956431|Fixed-rate block-based image compression with inferred pixel values}}</ref> для использования в компьютерном графическом ускорителе [[Savage 3D]].
Метод сжатия поразительно похож на ранее опубликованный [[Color Cell Compression]]<ref>{{cite web|url=http://ieeexplore.ieee.org/iel5/498/3989/00152671.pdf |title=1990 IEEE Color Cell Compression Paper |publisher=Ieeexplore.ieee.org |date= |accessdate=2012-01-25}}</ref>. '''DXTC''' — это формат сжатия текстур с потерями, с фиксированным размером выходных данных. Благодаря алгоритму сжатия, формат S3TC стал широко использованным форматом сжатия текстур для трехмерной компьютерной графики с аппаратным ускорением. После интеграции S3TC в состав Microsoft [[DirectX]] 6.0 и [[OpenGL]] 1.3 этот формат сжатия получил исключительно широкое распространение. Существует не менее 5 разновидностей формата S3TC (от DXT1 до DXT5 включительно).<ref>[https://software.intel.com/ru-ru/android/articles/android-texture-compression/ Сжатие Текстур]</ref>


== Кодеки ==
== Кодеки ==
Строка 22: Строка 24:
|- style="text-align:center;"
|- style="text-align:center;"
! Идентификатор кодека FOURCC
! Идентификатор кодека FOURCC
! Сжатие блоков
! Block Compression
! Описание
! Описание
! Premultiplied Alpha
! Premultiplied Alpha
! Степень сжатия
! Степень сжатия
! Поддерживаемые текстуры
! Texture Type
|- style="text-align:center;"
|- style="text-align:center;"
| DXT1 || BC1 || 1-bit Alpha / Opaque || N/A || 6:1(for 24 bit source image) || Simple non-alpha
| DXT1 || BC1 || 1-bit Alpha / Opaque || N/A || 6:1(for 24 bit source image) || Simple non-alpha
Строка 38: Строка 40:
| DXT5 || BC3 || Interpolated alpha || No || 4:1 || Gradient alpha
| DXT5 || BC3 || Interpolated alpha || No || 4:1 || Gradient alpha
|}
|}

Преимущества:
Преимущества:
* Размер файлов существенно меньше по сравнению с PNG.
* Размер файлов существенно меньше по сравнению с PNG.
Строка 43: Строка 46:
* Высокая скорость компрессии/декомпрессии изображений.
* Высокая скорость компрессии/декомпрессии изображений.
* Аппаратное ускорение обработки графическими процессорами реализовано в огромном количестве видеоадаптеров. Аппаратная поддержка применяется практически повсеместно на настольных ПК и постепенно охватывает устройства на базе Android.
* Аппаратное ускорение обработки графическими процессорами реализовано в огромном количестве видеоадаптеров. Аппаратная поддержка применяется практически повсеместно на настольных ПК и постепенно охватывает устройства на базе Android.

Недостатки:
Недостатки:
* Качество ниже, чем при использовании PNG (поскольку формат S3TC предусматривает сжатие с потерями).
* Качество ниже, чем при использовании PNG (поскольку формат S3TC предусматривает сжатие с потерями).
* Поддерживается не всеми устройствами на базе Android.

== Программные средства для сжатия ==
DirectX Texture Tool from DirectX (included in the DX SDK)<ref>http://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX Software Development Kit</ref>

=== Доступ к данным текстур ===
В большинстве форматов сжатия текстур существует заголовок, который находится в файле перед данными. В заголовке обычно содержатся сведения о формате сжатия текстур, высота, ширина и глубина текстуры, размер данных, внутренний формат и прочие свойства файла.


== См. также ==
== См. также ==
Строка 70: Строка 66:
== Литература ==
== Литература ==
* [http://msdn.microsoft.com/en-us/library/bb694531(v=vs.85).aspx Microsoft Developer Network article on Block Compression in Direct3D 10]
* [http://msdn.microsoft.com/en-us/library/bb694531(v=vs.85).aspx Microsoft Developer Network article on Block Compression in Direct3D 10]
* [http://developer.nvidia.com/object/nv_texture_tools.html NVIDIA Texture Tools]
* [https://web.archive.org/web/20091223141933/http://developer.amd.com/GPU/Pages/default.aspx AMD GPU Tools]
* [http://code.google.com/p/libsquish/ squish], an [[MIT license|MIT-licensed]] S3TC compressor. The site also contains [http://www.sjbrown.co.uk/?article=dxt an article] giving an introduction to compression algorithms.
* [http://people.freedesktop.org/~cbrill/libtxc_dxtn/ libtxc_dxtn], a BSD licensed module for Mesa
* [http://www.digit-life.com/articles/reviews3tcfxt1/ Comparison between S3TC and FXT1 texture compression]
* [http://www.digit-life.com/articles/reviews3tcfxt1/ Comparison between S3TC and FXT1 texture compression]
* [https://web.archive.org/web/20030618083605/http://www.hardwarecentral.com/hardwarecentral/reports/140/1/ The Truth about S3TC] Note: This article used an early S3TC compression engine, not nVidia’s or ATI’s updated codecs.
* [http://www.colecovision.eu/graphics/texture_compression.pdf Texture compression] survey
* [http://www.3dnews.ru/173342/ О технологии компрессии текстур S3TC]
* [http://www.3dnews.ru/173342/ О технологии компрессии текстур S3TC]
* [http://code.google.com/p/crunch/ crunch], a [[ZLIB license|ZLIB-licensed]] DXT1/5/N command line tool and compression library with a highly compressed intermediate format.
* [http://software.intel.com/en-us/articles/fast-cpu-dxt-compression/ A fast, SSE2-enabled DXT1/5 compressor by Intel]
* [http://software.intel.com/en-us/articles/fast-cpu-dxt-compression/ A fast, SSE2-enabled DXT1/5 compressor by Intel]



Версия от 14:35, 13 декабря 2019

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 предусматривает сжатие с потерями).

См. также

Ссылки

Литература