Справочник по режиму формата BC7

Эта документация содержит список из 8 режимов блоков и битовых выделений для блоков формата сжатия текстур BC7.

Цвета для каждого подмножества в блоке представляются двумя явно заданными цветами конечных точек и подмножеством интерполированных цветов между ними. В зависимости от точности индекса блока каждое подмножество может иметь 4, 8 или 16 возможных цветов.

Режим 0

Режим BC7 0 имеет следующие характеристики:

  • Только компоненты цвета (без альфа)
  • 3 подмножества на каждый блок
  • Конечные точки RGBP 4.4.4.1 с уникальным P-битом на конечную точку
  • 3-битовые индексы
  • 16 разделов

структура битов режима 0

Режим 1

Режим BC7 1 имеет следующие характеристики:

  • Только компоненты цвета (без альфа)
  • 2 подмножества на каждый блок
  • Конечные точки RGBP 6.6.6.1 с общим P-битом на подмножество)
  • 3-битовые индексы
  • 64 разделов

структура битов режима 1

Режим 2

Режим BC7 2 имеет следующие характеристики:

  • Только компоненты цвета (без альфа)
  • 3 подмножества на каждый блок
  • Конечные точки RGB 5.5.5
  • 2-битовые индексы
  • 64 разделов

структура битов режима 2

Режим 3

Режим BC7 3 имеет следующие характеристики:

  • Только компоненты цвета (без альфа)
  • 2 подмножества на каждый блок
  • Конечные точки RGBP 7.7.7.1 с уникальным P-битом на подмножество)
  • 2-битовые индексы
  • 64 разделов

структура битов режима 3

Режим 4

Режим BC7 4 имеет следующие характеристики:

  • Компоненты цвета с отдельным альфа-компонентом
  • 1 подмножество на блок
  • Конечные точки цвета RGB 5.5.5
  • 6-битовые конечные точки альфа
  • 16 x 2-битовых индексов
  • 16 x 3-битовых индексов
  • поворот 2-битового компонента
  • средство выбора 1-битового индекса (используются ли 2- или 3-битовые индексы)

структура битов режима 4

Режим 5

Режим BC7 5 имеет следующие характеристики:

  • Компоненты цвета с отдельным альфа-компонентом
  • 1 подмножество на блок
  • Конечные точки цвета RGB 7.7.7
  • 8-разрядные конечные точки альфа-канала
  • 16 x 2-битовые индексы цвета
  • 16 x 2-битовые альфа-индексы
  • поворот 2-битового компонента

структура битов режима 5

Режим 6

Режим BC7 6 имеет следующие характеристики:

  • Комбинированные компоненты цвета и альфа-компоненты
  • Одно подмножество на блок
  • Конечные точки цвета (и альфа) RGBAP 7.7.7.7.1 (уникальный P-бит на конечную точку)
  • 16 x 4-битовых индексов

структура битов режима 6

Режим 7

Режим BC7 7 имеет следующие характеристики:

  • Комбинированные компоненты цвета и альфа-компоненты
  • 2 подмножества на каждый блок
  • Конечные точки цвета (и альфа) RGBAP 5.5.5.5.1 (уникальный P-бит на конечную точку)
  • 2-битовые индексы
  • 64 разделов

структура битов режима 7

Комментарии

Режим 8 (наименее значимому байту присвоено значение 0x00) зарезервирован. Не используйте его в своем кодировщике. Если передать этот режим оборудованию, возвращается блок, инициализированный до всех нулей.

В BC7 можно зашифровать альфа-компонент одним из следующих способов:

  • Типы блоков без явной кодировки альфа-компонента. В этих блоках конечные точки цвета имеют только кодировку RGB, а альфа-компонент декодируется до 1.0 для всех текселей.

  • Типы блоков с объединенными компонентами цвета и альфа-компонентами. В этих блоках значения цвета конечной точки задаются в формате RGBA, а значения альфа-компонента интерполируются вместе со значениями цвета.

  • Типы блоков с отдельными компонентами цвета и альфа-компонентами. В этих блоках значения цвета и альфа задаются по отдельности — каждый со своим собственным набором индексов. В результате они имеют эффективный вектор и скалярный канал отдельно закодированы, где вектор обычно задает цветовые каналы [R, G, B], а скаляр — альфа-канал [A]. В поддержку такого подхода в кодировке предоставляется отдельное 2-битовое поле, которое позволяет задать отдельную кодировку канала в виде скалярного значения. В результате блок может иметь одно из следующих четырех представлений кодировки альфа (как указано в 2-битовом поле):

    • RGB|A: альфа-канал по отдельности
    • AGB|R: "красный" канал цвета по отдельности
    • RAB|G: "зеленый" канал цвета по отдельности
    • RGA|B: "синий" канал цвета по отдельности

    После декодирования декодер снова упорядочивает каналы в порядке RGBA, поэтому внутренний формат блоков невидим разработчику. Блоки с отдельными компонентами цвета и альфа также имеют два набора данных индекса: один для векторного набора каналов и один для скалярного канала. (В случае режима 4 эти индексы имеют разную ширину [2 или 3 бита]. Режим 4 также содержит 1-разрядный селектор, указывающий, использует ли вектор или скалярный канал 3-разрядные индексы.)

Формат BC7