压缩图像格式
Vulkan 使用的压缩纹理格式在 Khronos 数据格式规范 版本 1.3 的特定章节中进行了描述。
除非另有说明,否则这些压缩格式中编码的量将被视为归一化的无符号值。
那些被列为 sRGB 编码的格式,其内存中的 R、G 和 B 分量以非线性方式编码为 R'、G' 和 B';任何 alpha 分量都保持不变。作为过滤的一部分,非线性 R'、G' 和 B' 值将转换为线性 R、G 和 B 分量;任何 alpha 分量都保持不变。线性和非线性编码之间的转换按照 Khronos 数据格式规范的“KHR_DF_TRANSFER_SRGB”部分中的描述执行。
块压缩图像格式
BC1、BC2 和 BC3 格式在 Khronos 数据格式规范的“S3TC 压缩纹理图像格式”章节中描述。BC4 和 BC5 在“RGTC 压缩纹理图像格式”章节中描述。BC6H 和 BC7 在“BPTC 压缩纹理图像格式”章节中描述。
VkFormat | Khronos 数据格式规范 描述 |
---|---|
“S3TC 压缩纹理图像格式”章节中描述的格式 |
|
|
无 alpha 的 BC1 |
|
无 alpha 的 BC1,sRGB 编码 |
|
带 alpha 的 BC1 |
|
带 alpha 的 BC1,sRGB 编码 |
|
BC2 |
|
BC2,sRGB 编码 |
|
BC3 |
|
BC3,sRGB 编码 |
“RGTC 压缩纹理图像格式”章节中描述的格式 |
|
|
BC4 无符号 |
|
BC4 有符号 |
|
BC5 无符号 |
|
BC5 有符号 |
“BPTC 压缩纹理图像格式”章节中描述的格式 |
|
|
BC6H(无符号版本) |
|
BC6H(有符号版本) |
|
BC7 |
|
BC7,sRGB 编码 |
ETC 压缩图像格式
以下格式在 Khronos 数据格式规范的“ETC2 压缩纹理图像格式”章节中描述。
VkFormat | Khronos 数据格式规范 描述 |
---|---|
|
RGB ETC2 |
|
带 sRGB 编码的 RGB ETC2 |
|
带穿通 alpha 的 RGB ETC2 |
|
带穿通 alpha 和 sRGB 的 RGB ETC2 |
|
RGBA ETC2 |
|
带 sRGB 编码的 RGBA ETC2 |
|
无符号 R11 EAC |
|
有符号 R11 EAC |
|
无符号 RG11 EAC |
|
有符号 RG11 EAC |
ASTC 压缩图像格式
ASTC 格式在 Khronos 数据格式规范的“ASTC 压缩纹理图像格式”章节中描述。
VkFormat | 压缩纹素块尺寸 | 请求的模式 |
---|---|---|
|
4 × 4 |
线性 LDR |
|
4 × 4 |
sRGB |
|
5 × 4 |
线性 LDR |
|
5 × 4 |
sRGB |
|
5 × 5 |
线性 LDR |
|
5 × 5 |
sRGB |
|
6 × 5 |
线性 LDR |
|
6 × 5 |
sRGB |
|
6 × 6 |
线性 LDR |
|
6 × 6 |
sRGB |
|
8 × 5 |
线性 LDR |
|
8 × 5 |
sRGB |
|
8 × 6 |
线性 LDR |
|
8 × 6 |
sRGB |
|
8 × 8 |
线性 LDR |
|
8 × 8 |
sRGB |
|
10 × 5 |
线性 LDR |
|
10 × 5 |
sRGB |
|
10 × 6 |
线性 LDR |
|
10 × 6 |
sRGB |
|
10 × 8 |
线性 LDR |
|
10 × 8 |
sRGB |
|
10 × 10 |
线性 LDR |
|
10 × 10 |
sRGB |
|
12 × 10 |
线性 LDR |
|
12 × 10 |
sRGB |
|
12 × 12 |
线性 LDR |
|
12 × 12 |
sRGB |
|
4 × 4 |
HDR |
|
5 × 4 |
HDR |
|
5 × 5 |
HDR |
|
6 × 5 |
HDR |
|
6 × 6 |
HDR |
|
8 × 5 |
HDR |
|
8 × 6 |
HDR |
|
8 × 8 |
HDR |
|
10 × 5 |
HDR |
|
10 × 6 |
HDR |
|
10 × 8 |
HDR |
|
10 × 10 |
HDR |
|
12 × 10 |
HDR |
|
12 × 12 |
HDR |
包含 HDR 块编码的 ASTC 纹理 应该 使用 ASTC SFLOAT 纹理格式传递给 API。
如果实现仅支持 ASTC LDR 配置文件,则使用 LDR UNORM 格式传递的纹理中的 HDR 块将返回相应的 ASTC 错误颜色,但如果实现支持 HDR 解码,则可能会导致错误颜色或解压缩的 HDR 颜色。 |
ASTC 解码模式
如果启用了 VK_EXT_astc_decode_mode
扩展,则解码模式的确定方式如下:
VkFormat | 解码模式 |
---|---|
|
decode_float16 |
|
decode_unorm8 |
|
decode_rgb9e5 |
否则,ASTC 解码模式为 decode_float16。
请注意,除非解码模式为 decode_unorm8,否则在请求线性 LDR 模式时,实现**可能**会使用 HDR 模式。
PVRTC 压缩图像格式
PVRTC 格式在《Khronos 数据格式规范》的“PVRTC 压缩纹理图像格式”章节中进行了描述。
VkFormat | 压缩纹素块尺寸 | sRGB 编码 |
---|---|---|
|
8 × 4 |
否 |
|
4 × 4 |
否 |
|
8 × 4 |
否 |
|
4 × 4 |
否 |
|
8 × 4 |
是 |
|
4 × 4 |
是 |
|
8 × 4 |
是 |
|
4 × 4 |
是 |