Поделиться через


Сжатие блоков текстуры

Поддержка сжатия блоков (BC) для текстур была расширена в Direct3D 11, чтобы включить алгоритмы BC6H и BC7. BC6H поддерживает данные источника цвета с высоким динамическим диапазоном, а BC7 обеспечивает более высокое качество сжатия с меньшим количеством артефактов для стандартных исходных данных RGB.

Дополнительные сведения о поддержке алгоритма сжатия блоков до Direct3D 11, включая поддержку форматов BC1-BC5, см. в разделе "Сжатие блоков" (Direct3D 10).

**Примечание о форматах файлов: ** Форматы сжатия текстур BC6H и BC7 используют формат файла DDS для хранения сжатых данных текстуры. Дополнительные сведения см. в руководстве по программированию для DDS .

Форматы сжатия блоков, поддерживаемые в Direct3D 11

Исходные данные Минимальное разрешение сжатия данных Рекомендуемый формат Минимальный поддерживаемый уровень компонентов
Цвет трех каналов с альфа-каналом Три цветовых канала (5 бит:6 бит:5 бит), с 0 или 1 битами альфа BC1 Direct3D 9.1
Цвет трех каналов с альфа-каналом Три цветовых канала (5 бит:6 бит:5 бит), с 4 битами альфа BC2 Direct3D 9.1
Цвет трех каналов с альфа-каналом Три цветовых канала (5 бит:6 бит:5 бит) с 8 битами альфа BC3 Direct3D 9.1
Цвет одного канала Один канал цвета (8 бит) BC4 Direct3D 10
Цвет двухканавого канала Два цветовых канала (8 бит:8 бит) BC5 Direct3D 10
Три канала с высоким динамическим диапазоном (HDR) Три цветовых канала (16 бит:16 бит:16 бит) в "половине" с плавающей запятой* BC6H Direct3D 11
Цвет трех каналов, альфа-канал необязательный Три цветовых канала (от 4 до 7 бит на канал) с 0 до 8 бит альфа BC7 Direct3D 11

 

*"Половина" плавающей точки — это 16-разрядное значение, состоящее из необязательного бита знака, 5-разрядной предвзятой экспоненты, а также 10 или 11 бит мантисса.

Форматы BC1, BC2 и B3

Форматы BC1, BC2 и BC3 эквивалентны форматам сжатия текстур Direct3D 9 DXTn и совпадают с соответствующими форматами Direct3D 10 BC1, BC2 и BC3. Поддержка этих трех форматов необходима для всех уровней функций (D3D_FEATURE_LEVEL_9_1, D3D_FEATURE_LEVEL_9_2, D3D_FEATURE_LEVEL_9_3, D3D_FEATURE_LEVEL_10_0, D3D_FEATURE_LEVEL_10_1 и D3D_FEATURE_LEVEL_11_0).

Формат сжатия блоков Формат DXGI Эквивалентный формат Direct3D 9 Байты на блок пикселей 4x4
BC1 DXGI_FORMAT_BC1_UNORM, DXGI_FORMAT_BC1_UNORM_SRGB, DXGI_FORMAT_BC1_TYPELESS D3DFMT_DXT1, FourCC="DXT1" 8
BC2 DXGI_FORMAT_BC2_UNORM, DXGI_FORMAT_BC2_UNORM_SRGB, DXGI_FORMAT_BC2_TYPELESS D3DFMT_DXT2*, FourCC="DXT2", D3DFMT_DXT3, FourCC="DXT3" 16
BC3 DXGI_FORMAT_BC3_UNORM, DXGI_FORMAT_BC3_UNORM_SRGB, DXGI_FORMAT_BC3_TYPELESS D3DFMT_DXT4*, FourCC="DXT4", D3DFMT_DXT5, FourCC="DXT5" 16

 

*Эти схемы сжатия (DXT2 и DXT4) не отличаются от предварительно умноженных альфа-форматов Direct3D 9 и стандартных альфа-форматов. Это различие должно обрабатываться программируемыми шейдерами во время отрисовки.

Форматы BC4 и BC5

Формат сжатия блоков Формат DXGI Эквивалентный формат Direct3D 9 Байты на блок пикселей 4x4
BC4 DXGI_FORMAT_BC4_UNORM, DXGI_FORMAT_BC4_SNORM, DXGI_FORMAT_BC4_TYPELESS FourCC="ATI1" 8
BC5 DXGI_FORMAT_BC5_UNORM, DXGI_FORMAT_BC5_SNORM, DXGI_FORMAT_BC5_TYPELESS FourCC="ATI2" 16

 

Формат BC6H

Дополнительные сведения об этом формате см. в документации по формату BC6H.

Формат сжатия блоков Формат DXGI Эквивалентный формат Direct3D 9 Байты на блок пикселей 4x4
BC6H DXGI_FORMAT_BC6H_UF16, DXGI_FORMAT_BC6H_SF16, DXGI_FORMAT_BC6H_TYPELESS Н/П 16

 

Формат BC6H может выбирать различные режимы кодирования для каждого блока пикселей 4x4. Доступны в общей сложности 14 различных режимов кодирования, каждый из которых немного отличается от компромиссов в результирующем визуальном качестве отображаемой текстуры. Выбор режимов позволяет быстро декодировать оборудованием с выбранным или адаптированным уровнем качества в соответствии с исходным содержимым, но также значительно увеличивает сложность пространства поиска.

Формат BC7

Дополнительные сведения об этом формате см. в документации по формату BC7.

Формат сжатия блоков Формат DXGI Эквивалентный формат Direct3D 9 Байты на блок пикселей 4x4
BC7 DXGI_FORMAT_BC7_UNORM, DXGI_FORMAT_BC7_UNORM_SRGB, DXGI_FORMAT_BC7_TYPELESS Н/П 16

 

Формат BC7 может выбирать различные режимы кодирования для каждого блока пикселей 4x4. Доступны в общей сложности 8 различных режимов кодирования, каждый из которых немного отличается от компромиссов в результирующем визуальном качестве отображаемой текстуры. Выбор режимов позволяет быстро декодировать оборудованием с выбранным или адаптированным уровнем качества в соответствии с исходным содержимым, но также значительно увеличивает сложность пространства поиска.

Приложения

Текстуры