Сжатие блоков текстур в Direct3D 11
В Direct3D 11 расширена поддержка сжатия блоков для текстур и теперь она включает алгоритмы BC6H и BC7. BC6H поддерживает исходные данные цвета из высокодинамичного диапазона, а BC7 обеспечивает качество сжатия выше среднего с меньшим количеством артефактов для стандартных исходных данных RGB.
Более подробные сведения о поддержке алгоритма блочного сжатия в версиях до Direct3D 11 включая поддержку форматов BC1–BC5 см. в статье Блочное сжатие (Direct3D 10).
Примечание о форматах файлов: Форматы сжатия текстур BC6H и BC7 используют формат файла DDS для хранения сжатых данных текстуры. Дополнительные сведения см. в статье Руководство по программированию для DDS.
Форматы блочного сжатия, поддерживаемые в Direct3D 11
Исходные данные | Минимальное требуемое разрешение сжатия данных | Рекомендуемый формат | Минимальный поддерживаемый уровень возможностей |
---|---|---|---|
Трехканальный цвет с альфа-каналом | Три цветовых канала (5 бит:6 бит:5 бит), с нулевым или 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 и В3
Форматы BC1, BC2 и BC3 эквивалентны форматам сжатия текстур DXTn Direct3D 9 и совпадают с соответствующими форматами BC1, BC2, и BC3 в Direct3D. Поддержка этих трех форматов требуется для всех уровней функций (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 | Байт в блоке 4×4 пикселя |
---|---|---|---|
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 | Байт в блоке 4×4 пикселя |
---|---|---|---|
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 | Байт в блоке 4×4 пикселя |
---|---|---|---|
BC6H | DXGI_FORMAT_BC6H_UF16, DXGI_FORMAT_BC6H_SF16, DXGI_FORMAT_BC6H_TYPELESS | Н/Д | 16 |
Для формата BC6H можно выбирать разные режимы кодирования для каждого блока размером 4×4 пикселя. Доступно 14 различных режимов кодирования, каждый из которых обладает собственными, немного отличающимися от других плюсами и минусами, касающимися итогового качества отображения текстуры. Выбор режима обеспечивает быстрое декодирование оборудованием с выбранным или адаптированным в соответствии с исходным содержимым уровнем качества, но при этом значительно увеличивает сложность пространства поиска.
Формат BC7
Дополнительные сведения об этом формате см. в документации по формату BC7.
Формат блочного сжатия | Формат DXGI | Эквивалентный формат в Direct3D 9 | Байт в блоке 4×4 пикселя |
---|---|---|---|
BC7 | DXGI_FORMAT_BC7_UNORM, DXGI_FORMAT_BC7_UNORM_SRGB, DXGI_FORMAT_BC7_TYPELESS | Н/Д | 16 |
Для формата BC7 можно выбирать разные режимы кодирования для каждого блока размером 4×4 пикселя. Доступно 8 различных режимов кодирования, каждый из которых обладает собственными, немного отличающимися от других плюсами и минусами, касающимися итогового качества отображения текстуры. Выбор режима обеспечивает быстрое декодирование оборудованием с выбранным или адаптированным в соответствии с исходным содержимым уровнем качества, но при этом значительно увеличивает сложность пространства поиска.
В этом разделе
Раздел | Описание |
---|---|
Формат BC6H |
Формат BC6H — это формат сжатия текстуры, предназначенный для обеспечения поддержки цветовых пространств HDR в исходных данных. |
Формат BC7 |
Формат BC7 — это формат сжатия текстур, используемый для высококачественного сжатия данных RGB и RGBA. |
Справочник по режиму формата BC7 |
Эта документация содержит список из 8 режимов блоков и битовых выделений для блоков формата сжатия текстур BC7. |