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 种块模式和位分配的列表。 |