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


Сжатие блоков текстур в 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.

Блочное сжатие (Direct3D 10)

Текстуры