Сжатие текстур S3 - S3 Texture Compression
Сжатие текстур S3 (S3TC) (иногда также называют DXTn, DXTC, или же BCn) представляет собой группу связанных с потерями сжатие текстуры алгоритмы первоначально разработанный Iourcha et al. из S3 Graphics, Ltd.[1][2] для использования в их Дикарь 3D ускоритель компьютерной графики. Метод сжатия поразительно похож на опубликованный ранее. Сжатие цветных ячеек,[3] что, в свою очередь, является адаптацией Блочное усечение кодирования опубликовано в конце 1970-х гг. В отличие от некоторых алгоритмов сжатия изображений (например, JPEG ), Сжатие данных с фиксированной скоростью S3TC в сочетании с единственным доступом к памяти (см. Сжатие цветных ячеек и некоторые VQ -схемы) сделали его хорошо подходящим для использования при сжатии текстуры с аппаратным ускорением 3D компьютерная графика. Его последующее включение в Microsoft с DirectX 6.0 и OpenGL 1.3 (через GL_EXT_texture_compression_s3tc расширение ) привел к широкому распространению технологии среди производителей аппаратного и программного обеспечения. Хотя S3 Graphics больше не является конкурентом на рынке графических ускорителей, лицензионные сборы взимались и собирались за использование технологии S3TC до октября 2017 года, например, в Игровые приставки и видеокарты. Широкое использование S3TC привело к де-факто требование к драйверам OpenGL для его поддержки, но обремененный патентами статус S3TC представляет собой серьезное препятствие для Открытый исходный код реализации,[4] пока существовали подходы к реализации, которые пытались избежать запатентованных частей.[5]
Патент
Срок действия некоторых (например, US 5956431 A) из нескольких патентов USPTO на сжатие текстур S3 истек 2 октября 2017 г.[6] По крайней мере, один дополнительный патент, 6 775 417 долларов США, однако имел продление на 165 дней. Срок действия этого патента на продолжение истек 16 марта 2018 г.
Кодеки
Существует пять вариантов алгоритма S3TC (названных DXT1 через DXT5, ссылаясь на FourCC код, присвоенный Microsoft каждому формату), каждый из которых предназначен для определенных типов данных изображения. Все конвертируют блок 4 × 4 пиксели в 64-кусочек или 128-битное количество, что приводит к степени сжатия 6: 1 с 24-битным RGB входные данные или 4: 1 с 32-битным RGBA входные данные. S3TC - это с потерями алгоритм сжатия, приводящий к ухудшению качества изображения, эффект, который сводится к минимуму за счет возможности увеличения разрешения текстуры при сохранении тех же требований к памяти. Нарисованные от руки изображения, похожие на мультфильмы, плохо сжимаются и не сжимаются. карта нормалей данные, которые обычно генерируют артефакты. ATI с 3Dc алгоритм сжатия - это модификация DXT5, призванная преодолеть недостатки S3TC в отношении карт нормалей. id Программное обеспечение работал над проблемами сжатия карты нормалей в Судьба 3 перемещая красный компонент в альфа-канал перед сжатием и перемещая его назад во время рендеринга в пиксельный шейдер.[7]
Как и многие современные алгоритмы сжатия изображений, S3TC определяет только метод, используемый для распаковки изображений, что позволяет разработчикам разрабатывать алгоритм сжатия в соответствии с их конкретными потребностями, хотя патент по-прежнему распространяется на алгоритмы сжатия. В nVidia Карты от GeForce 256 до GeForce 4 также использовали 16-битную интерполяцию для рендеринга текстур DXT1, что приводило к появлению полос при распаковке текстур с цветовыми градиентами. Опять же, это произвело неблагоприятное впечатление сжатие текстуры, не относящиеся к основам самого кодека.
DXT1
DXT1 (также известный как блочное сжатие 1 или BC1) - это наименьший вариант S3TC, хранящий 16 входных пикселей в 64-битных выходных, состоящих из двух 16-битных значений цвета RGB 5: 6: 5. и и двухбитовая таблица поиска 4x4.
Если (сравните эти цвета, интерпретируя их как два 16-битных беззнаковых числа), затем вычисляются два других цвета, так что для каждого компонента и Этот режим работает аналогично режиму 0xC0 оригинальный кодек Apple Video.[8]
В противном случае, если , тогда и прозрачный черный, соответствующий предварительно умноженный альфа-формат.
Затем выполняется консультация со справочной таблицей для определения значения цвета для каждого пикселя со значением 0, соответствующим и значение 3 соответствует .
DXT2 и DXT3
DXT2 и DXT3 (вместе также известные как блочное сжатие 2 или BC2) преобразуют 16 входных пикселей (соответствующих блоку пикселей 4x4) в 128 бит выходных данных, состоящих из 64 бит альфа-канал данные (4 бита для каждого пикселя), за которыми следуют 64 бита данных цвета, закодированных так же, как DXT1 (за исключением того, что всегда используется 4-цветная версия алгоритма DXT1 вместо того, чтобы решать, какую версию использовать на основе относительной ценности и ).
В DXT2 данные цвета интерпретируются как предварительно умноженный на альфа, в DXT3 он интерпретируется как не умноженный на альфа. Обычно DXT2 / 3 хорошо подходят для изображений с резкими альфа-переходами между полупрозрачными и непрозрачными областями.
DXT4 и DXT5
DXT4 и DXT5 (вместе также известные как блочное сжатие 3 или BC3) преобразуют 16 входных пикселей в 128 бит выходных данных, состоящих из 64 бит данных альфа-канала (два 8-битных альфа-значения и 3-битная таблица поиска 4x4), за которыми следует 64 бита данных о цвете (закодированы так же, как DXT1).
Если , затем вычисляются шесть других значений альфа, так что , , , , , и .
В противном случае, если , четыре других альфа-значения вычисляются так, что , , , и с и .
Затем выполняется консультация с поисковой таблицей для определения альфа-значения для каждого пикселя со значением 0, соответствующим и значение 7, соответствующее . Цветовые данные DXT4 предварительно умножаются на альфа, тогда как DXT5 - нет. Поскольку в DXT4 / 5 используется интерполированная альфа-схема, они обычно дают лучшие результаты для альфа-градиентов (прозрачности), чем DXT2 / 3.
Дальнейшие варианты
BC4 и BC5
BC4 и BC5 (блочное сжатие 4 и 5) добавлены в Direct3D 10. Они повторно используют кодировку альфа-канала, найденную в DXT4 / 5 (BC3).[9]
- BC4 сохраняет 16 входных одноканальных (например, в оттенках серого) пикселей в 64 бита выходных данных, кодированных так же, как BC3 alphas. Расширенная палитра обеспечивает более высокое качество.
- BC5 хранит 16 входных двухканальных пикселей (например, карта нормалей касательного пространства) в 128 битах выходных данных, состоящих из двух половин, каждая из которых закодирована так же, как и альфа-каналы BC3.
BC6H и BC7
BC6H (иногда BC6) и BC7 (блочное сжатие 6H и 7) добавлены в Direct3D 11.[9]
- BC6H кодирует 16 входных пикселей RGB HDR (float16) в 128 бит выходных данных.
- BC7 кодирует 16 входных пикселей RGB8 / RGBA8 в 128 бит выходных данных.
BC6H и BC7 имеют гораздо более сложный алгоритм с выбором режимов кодирования. В результате качество намного лучше.[9]
Сравнение формата S3TC
FOURCC | Имя DX 10/11 | Описание | Преумноженная альфа? | Коэффициент сжатия | Тип текстуры |
---|---|---|---|---|---|
DXT1 | BC1 | 1-битный альфа / непрозрачный | да | 6: 1 (для 24-битного исходного изображения) | Простой не-альфа |
DXT2 | BC2 | Явная альфа | да | 4:1 | Резкая альфа |
DXT3 | BC2 | Явная альфа | Нет | 4:1 | Резкая альфа |
DXT4 | BC3 | Интерполированная альфа | да | 4:1 | Градиент альфа |
DXT5 | BC3 | Интерполированная альфа | Нет | 4:1 | Градиент альфа |
Нет данных | BC4 | Интерполированная шкала серого | Нет данных | 2:1 | Градиент |
Нет данных | BC5 | Интерполированный двухканальный | Нет данных | 2:1 | Градиент |
Смотрите также
- S2TC, обходной путь без патента
- FXT1
- DirectDraw поверхность
- PVRTC
- Адаптивное масштабируемое сжатие текстур (ASTC)
- Сжатие текстур Ericsson (ETC1 и ETC2)
- Сжатие цветных ячеек
Рекомендации
- ^ США 5956431 «Сжатие изображения на основе блоков с фиксированной скоростью и предполагаемыми значениями пикселей»
- ^ [1], Юрча, Константин I .; Кришна С. Наяк и Чжоу Хонг, «Система и метод для блочного сжатия изображения с фиксированной скоростью и предполагаемыми значениями пикселей»
- ^ "Бумага для сжатия цветных ячеек IEEE 1990 г.". Ieeexplore.ieee.org. Дои:10.1109 / TENCON.1990.152671. S2CID 62015990. Цитировать журнал требует
| журнал =
(помощь) - ^ «Ситуация с S3TC на официальной информационной странице DRI». Dri.freedesktop.org. Получено 2012-01-25.
- ^ S2TC: возможное решение патентной ситуации S3TC на фороникс
- ^ Йетс, Том (2017-02-15). «Вот почему я пью: обсуждение правового состояния Fedora». LWN.net. Получено 2017-02-16.
... Срок действия патента на сжатие текстур S3 истекает 2 октября 2017 года, поэтому игры Steam могут лучше работать в Fedora после этой даты. ...
- ^ Даффи, Роберт (27 июля 2004 г.). «Требования к видео для DOOM 3». Gamershell.com. Архивировано из оригинал 3 января 2008 г.. Получено 2012-01-25.
- ^ Тонни, Роберто и др. "Яблочный RPZA ". MultimediaWiki.
- ^ а б c Рид, Натан. «Понимание форматов сжатия текстур BCn». Блог о программировании Натана Рида.
внешняя ссылка
В этом разделе использование внешняя ссылка может не следовать политикам или рекомендациям Википедии.Февраль 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
- Бюро патентов и товарных знаков США, База данных полных текстов и изображений патентов, результат для US 5956431 A
- Поиск патента USPTO для US 5956431 A
- Статья Microsoft Developer Network о блочном сжатии в Direct3D 10
- хлюпать, Под лицензией MIT Компрессор S3TC. На сайте также есть статья введение в алгоритмы сжатия.
- Сравнение сжатия текстур S3TC и FXT1
- Правда о S3TC Примечание. В этой статье использовался ранний механизм сжатия S3TC, а не nVidia или обновленные кодеки ATI.
(Wayback Machine копия)