Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Сжатие текстур S3 ( S3TC ) (иногда также называемое DXTn , DXTC или BCn ) - это группа связанных алгоритмов сжатия текстур с потерями , первоначально разработанных Iourcha et al. компании S3 Graphics, Ltd. [1] [2] для использования в их ускорителе компьютерной графики Savage 3D . Метод сжатия поразительно похож на ранее опубликованной Color Cell сжатия , [3] , который , в свою очередь адаптация блока усечения Кодирование опубликованной в конце 1970 - х годов. В отличие от некоторых алгоритмов сжатия изображений (например, JPEG), Сжатие данных с фиксированной скоростью в S3TC в сочетании с единым доступом к памяти (см. Сжатие цветных ячеек и некоторые схемы на основе VQ ) сделали его хорошо подходящим для использования при сжатии текстур в трехмерной компьютерной графике с аппаратным ускорением . Последующее включение в Microsoft «s 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] По крайней мере, один дополнительный патент, US 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 «s 3Dc алгоритм сжатия является модификацией DXT5 разработана для преодоления недостатков S3TC в отношении обычных карт. Программное обеспечение id работало с проблемами сжатия карты нормалей в Doom 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. Расширенная палитра обеспечивает более высокое качество.
  • 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 [ править ]

См. Также [ править ]

  • S2TC , обходной путь без патента
  • FXT1
  • Поверхность DirectDraw
  • PVRTC
  • Адаптивное масштабируемое сжатие текстур (ASTC)
  • Сжатие текстур Ericsson (ETC1 и ETC2)
  • Сжатие цветных ячеек

Ссылки [ править ]

  1. ^ US 5956431  «Сжатие изображений на основе блоков с фиксированной скоростью и предполагаемыми значениями пикселей»
  2. ^ [1] , Юрча, Константин I .; Кришна С. Наяк и Чжоу Хонг, «Система и метод для сжатия изображения на основе блоков с фиксированной скоростью и предполагаемыми значениями пикселей» 
  3. ^ "1990 IEEE Color Cell Compression Paper". Ieeexplore.ieee.org. DOI : 10.1109 / TENCON.1990.152671 . S2CID  62015990 . Cite journal requires |journal= (help)
  4. ^ "Ситуация с S3TC на официальной информационной странице DRI" . Dri.freedesktop.org . Проверено 25 января 2012 . CS1 maint: discouraged parameter (link)
  5. ^ S2TC: Возможный обходной путь для патентной ситуации S3TC на phoronix
  6. ^ Йетс, Том (2017-02-15). «Вот почему я пью: обсуждение правового состояния Fedora» . LWN.net . Проверено 16 февраля 2017 . ... Патент на сжатие текстур S3 истекает 2 октября 2017 года, поэтому игры Steam могут работать лучше на Fedora после этой даты. ...
  7. Даффи, Роберт (27 июля 2004 г.). «Требования к видео в DOOM 3» . Gamershell.com. Архивировано из оригинала на 3 января 2008 года . Проверено 25 января 2012 . CS1 maint: discouraged parameter (link)
  8. ^ Тонни, Роберто и др. « Яблочный РПЗА ». MultimediaWiki.
  9. ^ a b c Рид, Натан. «Понимание форматов сжатия текстур BCn» . Блог о программировании Натана Рида .

Внешние ссылки [ править ]

  • Бюро патентов и товарных знаков США, База данных полных текстов и изображений патентов, результат для US 5956431 A
  • Поиск патента USPTO для US 5956431 A
  • Статья Microsoft Developer Network о блочном сжатии в Direct3D 10
  • squish , компрессор S3TC, лицензированный MIT . На сайте также есть статья с введением в алгоритмы сжатия.
  • Сравнение сжатия текстур S3TC и FXT1
  • Правда о S3TC Примечание. В этой статье использовался ранний механизм сжатия S3TC, а не обновленные кодеки nVidia или ATI.

( Копия Wayback Machine )

  • Обзор сжатия текстур
  • Быстрый компрессор DXT1 / 5 с поддержкой SSE2 от Intel
  • Бетси, компрессор с ускорением на GPU.
  • Современные кодеры BC1-7 с открытым исходным кодом, поддерживающие оптимизацию искажений (RDO)
  • Сжатие текстур DXT с помощью SDL