Jump to content

Сжатие текстур S3

(Перенаправлено с S3TC )

Сжатие текстур S3 ( S3TC ) (иногда также называемое DXTn , DXTC или BCn ) — это группа связанных с потерями, сжатия текстур алгоритмов первоначально разработанных Iourcha et al. ООО «С3 Графика» [1] [2] для использования в их Savage 3D ускорителе компьютерной графики . Метод сжатия поразительно похож на ранее опубликованный Color Cell Compression , [3] который, в свою очередь, является адаптацией блочного кодирования усечения , опубликованной в конце 1970-х годов. В отличие от некоторых алгоритмов сжатия изображений (например, JPEG ), сжатие данных S3TC с фиксированной скоростью в сочетании с единым доступом к памяти (см. Color Cell Compression и некоторые схемы на основе VQ ) сделало его хорошо подходящим для использования при сжатии текстур с аппаратным ускорением в 3D . компьютерная графика . Ее последующее включение в Microsoft DirectX . 6.0 и OpenGL GL_EXT_texture_compression_s3tc 1.3 (через расширение ) привело к широкому распространению этой технологии среди производителей аппаратного и программного обеспечения Хотя S3 Graphics больше не является конкурентом на рынке графических ускорителей, до октября 2017 года взимались лицензионные сборы за использование технологии S3TC, например, в игровых консолях и видеокартах. Широкое использование S3TC привело к фактическому требованию, чтобы драйверы OpenGL поддерживали его, но обремененный патентами статус S3TC стал серьезным препятствием для с открытым исходным кодом . реализации [4] в то время как существовали подходы к реализации, которые пытались избежать запатентованных частей. [5]

Срок действия некоторых (например, US 5956431 A) патентов USPTO на сжатие текстур S3 истек 2 октября 2017 г. [6] Однако по крайней мере один продленный патент, US6,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 Software решила проблемы сжатия карт нормалей в Doom 3, переместив красный компонент в альфа-канал перед сжатием и переместив его обратно во время рендеринга в пиксельном шейдере. . [7]

Как и многие современные алгоритмы сжатия изображений, S3TC определяет только метод, используемый для распаковки изображений, что позволяет разработчикам разрабатывать алгоритм сжатия в соответствии со своими конкретными потребностями, хотя патент по-прежнему охватывает алгоритмы сжатия. GeForce Карты от nVidia 256 до GeForce 4 также использовали 16-битную интерполяцию для рендеринга текстур DXT1, что приводило к полосам при распаковке текстур с цветовыми градиентами. Опять же, это создавало неблагоприятное впечатление от сжатия текстур , не связанное с принципами работы самого кодека.

DXT1 (также известный как Block Compression 1 или BC1) — это наименьшая разновидность S3TC, хранящая 16 входных пикселей в 64 битах вывода, состоящих из двух 16-битных цветовых значений RGB 5:6:5. и и двухбитовую справочную таблицу 4×4.

Если (сравните эти цвета, интерпретируя их как два 16-битных беззнаковых числа), затем вычисляются два других цвета, так что для каждого компонента и .Этот режим работает аналогично режиму 0xC0 оригинального кодека Apple Video . [8]

В противном случае, если , затем и прозрачный черный цвет, соответствующий предварительно умноженному альфа-формату . Этот цвет иногда вызывает черную рамку вокруг прозрачной области при использовании линейной фильтрации текстур и альфа-теста из-за интерполяции цветов между цветом непрозрачного текселя и соседнего черного прозрачного текселя.

Затем обращается к справочной таблице для определения значения цвета для каждого пикселя, причем значение 0 соответствует и значение 3, соответствующее .

ДХТ2 и ДХТ3

[ редактировать ]

DXT2 и DXT3 (вместе также известные как Block Compression 2 или BC2) преобразуют 16 входных пикселей (соответствующих блоку пикселей 4x4) в 128 бит выходных данных, состоящих из 64 бит данных альфа-канала (4 бита для каждого пикселя), за которыми следуют 64 бита данных альфа-канала (4 бита для каждого пикселя). биты цветовых данных, закодированные так же, как DXT1 (за исключением того, что всегда используется 4-цветная версия алгоритма DXT1 вместо того, чтобы решать, какую версию использовать, на основе относительных значений и ).

В DXT2 данные цвета интерпретируются как предварительно умноженные на альфа , в DXT3 они интерпретируются как не умноженные на альфа. Обычно DXT2/3 хорошо подходят для изображений с резкими альфа-переходами между полупрозрачными и непрозрачными областями.

DXT4 и DXT5 (вместе также известные как Block Compression 3 или BC3) преобразуют 16 входных пикселей в 128 бит выходных данных, состоящих из 64 бит данных альфа-канала (два 8-битных альфа-значения и 3-битная справочная таблица 4 × 4). за которым следуют 64 бита цветовых данных (закодированных так же, как DXT1).

Если , затем вычисляются шесть других значений альфа, так что , , , , , и .

В противном случае, если , четыре других значения альфа вычисляются так, что , , , и с и .

Затем обращается к таблице поиска для определения значения альфа для каждого пикселя, причем значение 0 соответствует и значение 7, соответствующее . Цветовые данные DXT4 предварительно умножаются на альфу, тогда как данные DXT5 — нет. Поскольку DXT4/5 использует интерполированную альфа-схему, они обычно дают лучшие результаты для градиентов альфа (прозрачности), чем DXT2/3.

Дальнейшие варианты

[ редактировать ]

BC4 и BC5 (блочное сжатие 4 и 5) добавлены в Direct3D 10. Они повторно используют кодировку альфа-канала, найденную в DXT4/5 (BC3). [9]

  • BC4 сохраняет 16 входных одноканальных (например, в оттенках серого) пикселей в 64 битах вывода, закодированных почти в [10] так же, как и альфа-версии BC3. Расширенная палитра обеспечивает более высокое качество.
  • BC5 сохраняет 16 входных двухканальных пикселей (например, карты нормалей касательного пространства) в 128 бит выходных данных, состоящих из двух половин, каждая из которых закодирована аналогично BC4.

BC6H (иногда BC6) и BC7 (сжатие блоков 6H и 7) добавлены в Direct3D 11. [9]

  • BC6H кодирует 16 входных пикселей RGB HDR (float16) в 128 бит выходного сигнала. По сути, он рассматривает float16 как целое число со знаком 16 и интерполирует такие целые числа линейно. Это хорошо работает для блоков без смены знаков. Всего определено 14 режимов, хотя большинство из них отличаются минимально: реально используются только два режима прогнозирования. [10]
  • BC7 кодирует 16 входных пикселей RGB8/RGBA8 в 128 бит выходного сигнала. Его можно понимать как сильно улучшенный BC3. [10]

BC6H и BC7 имеют гораздо более сложный алгоритм с выбором режимов кодирования. В результате качество намного лучше. [9] Эти два режима также определены гораздо точнее, с указанием диапазонов допустимых отклонений. Более ранние режимы BCn у разных производителей графических процессоров декодируются немного по-разному. [10]

Сравнение форматов S3TC

[ редактировать ]
ФУРСС Имя DX 10/11 Описание Альфа предварительно умножила? Степень сжатия Тип текстуры
ДХТ1 BC1 1-битный альфа/непрозрачный Да 6:1 (для 24-битного исходного изображения) Простой не альфа
ДХТ2 BC2 Явная альфа Да 4:1 Резкая альфа
ДХТ3 BC2 Явная альфа Нет 4:1 Резкая альфа
DXT4 BC3 Интерполированная альфа Да 4:1 Градиент альфа
ДХТ5 BC3 Интерполированная альфа Нет 4:1 Градиент альфа
BC4 Интерполированные оттенки серого 2:1 Градиент
BC5 Интерполированный двухканальный 2:1 Градиент
BC6H Интерполированный HDR (без альфа) 6:1 Градиент
BC7 Интерполированная альфа ? 4:1 Градиент

Предварительная подготовка данных

[ редактировать ]

Текстуры BCn можно дополнительно сжимать для хранения и распространения на диске ( суперсжатие текстур ). Приложение распакует этот дополнительный слой и отправит данные BCn в графический процессор, как обычно.

BCn можно комбинировать с Oodle Textur, препроцессором с потерями, который изменяет входную текстуру, чтобы выходные данные BCn было легче сжимать компрессором LZ77 ( оптимизация искажения скорости ). BC7, в частности, может также использовать «bc7prep», проход без потерь для перекодирования текстуры в более сжимаемую форму (требующую ее инверсии при распаковке). [11]

crunch — еще один инструмент, выполняющий RDO и, при необходимости, дальнейшее перекодирование. [12]

В 2021 году Microsoft разработала алгоритм сжатия BCPack специально для текстур, сжатых с помощью BCn. Xbox серий X и S имеют аппаратную поддержку распаковки потоков BCPack. [13]

См. также

[ редактировать ]
  1. ^ US 5956431   «Блочное сжатие изображений с фиксированной скоростью и выведенными значениями пикселей»
  2. ^ US 5956431 , Юрча, Константин И.; Наяк, Кришна С. и Хонг, Чжоу, «Система и метод блочного сжатия изображений с фиксированной скоростью и выведенными значениями пикселей», опубликовано 21 сентября 1999 г.  
  3. ^ «Бумага для сжатия цветных ячеек IEEE 1990 года». ИИЭЭ . дои : 10.1109/TENCON.1990.152671 . S2CID   62015990 . {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  4. ^ «Ситуация S3TC на официальной информационной странице DRI» . Dri.freedesktop.org. Архивировано из оригинала 19 января 2012 г. Проверено 25 января 2012 г.
  5. ^ S2TC: возможный обходной путь для ситуации с патентом S3TC. Архивировано 13 мая 2016 г. на Wayback Machine на phoronix.
  6. ^ Йейтс, Том (15 февраля 2017 г.). «Вот почему я пью: обсуждение правового состояния Fedora» . LWN.net . Архивировано из оригинала 01 марта 2017 г. Проверено 16 февраля 2017 г. ... Срок действия патента на сжатие текстур S3 истекает 2 октября 2017 года, поэтому игры Steam могут работать лучше в Fedora после этой даты. ...
  7. ^ Даффи, Роберт (27 июля 2004 г.). «Требования к видео DOOM 3» . Gamershell.com. Архивировано из оригинала 3 января 2008 года . Проверено 25 января 2012 г.
  8. ^ Тони, Роберто и др. « Apple RPZA. Архивировано 4 июля 2017 г. в Wayback Machine ». МультимедиаВики.
  9. ^ Jump up to: а б с Рид, Натан. «Понимание форматов сжатия текстур BCn» . Блог по программированию Натана Рида . Архивировано из оригинала 09.11.2020 . Проверено 1 сентября 2020 г.
  10. ^ Jump up to: а б с д Гизен, Фабиан «ryg» (4 октября 2021 г.). «Декодирование GPU BCn» . Блог ryg . Архивировано из оригинала 24 июля 2023 года . Проверено 24 июля 2023 г.
  11. ^ «Сжатие текстур Oodle» . www.radgametools.com . Архивировано из оригинала 18 марта 2023 г. Проверено 03 апреля 2023 г. Упоминается часть с открытым исходным кодом: bc7enc_rdo. Архивировано 2 февраля 2021 г. на Wayback Machine.
  12. ^ «Crunch библиотека сжатия текстур с открытым исходным кодом» . Гитхаб . Архивировано из оригинала 9 сентября 2016 г. Проверено 13 сентября 2016 г.
  13. ^ «Обзор DirectStorage — комплект разработки игр Microsoft» . 16 марта 2023 года. Архивировано из оригинала 3 августа 2023 года . Проверено 3 августа 2023 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c2a1f7385557d934f91525d14ed25291__1722390780
URL1:https://arc.ask3.ru/arc/aa/c2/91/c2a1f7385557d934f91525d14ed25291.html
Заголовок, (Title) документа по адресу, URL1:
S3 Texture Compression - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)