Direct3D 11 中的纹理块压缩

Direct3D 11 中的纹理块压缩 (BC) 支持已经过扩展,以包含 BC6H 和 BC7 算法。 BC6H 支持高动态范围颜色源数据,而 BC7 以较少的平均 RGB 源数据项目提供优于平均质量的压缩。

有关 Direct3D 11 之前纹理块压缩算法支持的更多详细信息(包括针对 BC1 至 BC5 格式的支持),请参见纹理块压缩 (Direct3D 10)

有关文件格式的说明: BC6H 和 BC7 纹理压缩格式使用 DDS 文件格式来存储压缩的纹理数据。 要了解更多信息,请参见 DDS 编程指南

Direct3D 11 中支持的纹理块压缩格式

源数据 数据压缩分辨率最低要求 推荐格式 支持的最低功能级别
alpha 通道可选三个通道颜色 三种颜色的通道(5 位:6 位:5 位),alpha 通道为 0 或 1 位 BC1 Direct3D 9.1
alpha 通道可选三个通道颜色 三种颜色的通道(5 位:6 位:5 位),alpha 通道为 4 位 BC2 Direct3D 9.1
alpha 通道可选三个通道颜色 三种颜色的通道(5 位:6 位:5 位),alpha 通道为 8 位 BC3 Direct3D 9.1
单通道的颜色 单色通道(8 位) BC4 Direct3D 10
两个通道的颜色 双色通道(8 位:8 位) BC5 Direct3D 10
三个信道高动态范围 (HDR) 颜色 三种颜色的通道(16 位:16 位:16 位),采用半精度浮点数格式* BC6H Direct3D 11
alpha 通道可选三个通道颜色 三种颜色的通道(每个通道为 4 位到 7 位),alpha 通道为 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 预乘 alpha 格式以及标准 alpha 格式。 在呈现时,不必须使用可编程的着色器进行此区分。

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 种不同的编码模式可选,在每种模式下最终显示的纹理的视觉效果都略有不同。 选择合适的模式有助于硬件快速解码(根据源内容选择或调整质量级别),但这也极大地增加了搜索空间的复杂性。

在本节中

主题 说明
BC6H 格式
BC6H 格式是一种纹理压缩格式,设计用于支持源数据中的高动态范围 (HDR) 颜色空间。
BC7 格式
BC7 格式是一种用于对 RGB 和 RGBA 数据进行高质量压缩的纹理压缩格式。
BC7 格式模式参考
本文档包含 BC7 纹理压缩格式块的 8 种块模式和位分配的列表。

块压缩 (Direct3D 10)

纹理