vulkan/数据格式说明- normalized
-
VK_FORMAT_A8B8G8R8_UNORM_PACK32 -
VK_FORMAT_A8B8G8R8_SNORM_PACK32 -
VK_FORMAT_A8B8G8R8_USCALED_PACK32 -
VK_FORMAT_A8B8G8R8_SSCALED_PACK32 -
VK_FORMAT_A8B8G8R8_UINT_PACK32
引用规范中的 Identification of Formats 和 Conversion from Normalized Fixed-Point to Floating-Point。
UNORM是float范围内的[0, 1]。SNORM相同,但在[-1, 1]
USCALED是转换为float
SSCALED是转换为float
UINT是一个无符号整数SINT是有符号整数
对于
VK_FORMAT_R8_* :- 用于
UNORM原始0将给出0.0f,原始255将给出1.0f - 用于
SNORM原始-127(resp.129) 将给出-1.0f,原始127将给出1.0f USCALED原始0将给出0.0f,原始255将给出255.0fSSCALEDraw-128(resp.128) 会给出-128.0f, raw127会给出127.0f
-128 (-2n-1) 在 SNORM 中没有意义,只是简单地钳制到 -1.0f 。33.1.3. Packed Formats
For the purposes of address alignment when accessing buffer memory containing vertex attribute or texel data, the following formats are considered packed - components of the texels or attributes are stored in bitfields packed into one or more 8-, 16-, or 32-bit fundamental data type.
-
-
VK_FORMAT_R4G4_UNORM_PACK8
-
-
Packed into 16-bit data types:
-
VK_FORMAT_R4G4B4A4_UNORM_PACK16 -
VK_FORMAT_B4G4R4A4_UNORM_PACK16 -
VK_FORMAT_R5G6B5_UNORM_PACK16 -
VK_FORMAT_B5G6R5_UNORM_PACK16 -
VK_FORMAT_R5G5B5A1_UNORM_PACK16 -
VK_FORMAT_B5G5R5A1_UNORM_PACK16 -
VK_FORMAT_A1R5G5B5_UNORM_PACK16 -
VK_FORMAT_R10X6_UNORM_PACK16 -
VK_FORMAT_R10X6G10X6_UNORM_2PACK16 -
VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 -
VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 -
VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 -
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 -
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 -
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 -
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 -
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 -
VK_FORMAT_R12X4_UNORM_PACK16 -
VK_FORMAT_R12X4G12X4_UNORM_2PACK16 -
VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 -
VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 -
VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 -
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 -
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 -
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 -
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 -
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
-
-
Packed into 32-bit data types:
-
VK_FORMAT_A8B8G8R8_UNORM_PACK32 -
VK_FORMAT_A8B8G8R8_SNORM_PACK32 -
VK_FORMAT_A8B8G8R8_USCALED_PACK32 -
VK_FORMAT_A8B8G8R8_SSCALED_PACK32 -
VK_FORMAT_A8B8G8R8_UINT_PACK32 -
VK_FORMAT_A8B8G8R8_SINT_PACK32 -
VK_FORMAT_A8B8G8R8_SRGB_PACK32 -
VK_FORMAT_A2R10G10B10_UNORM_PACK32 -
VK_FORMAT_A2R10G10B10_SNORM_PACK32 -
VK_FORMAT_A2R10G10B10_USCALED_PACK32 -
VK_FORMAT_A2R10G10B10_SSCALED_PACK32 -
VK_FORMAT_A2R10G10B10_UINT_PACK32 -
VK_FORMAT_A2R10G10B10_SINT_PACK32 -
VK_FORMAT_A2B10G10R10_UNORM_PACK32 -
VK_FORMAT_A2B10G10R10_SNORM_PACK32 -
VK_FORMAT_A2B10G10R10_USCALED_PACK32 -
VK_FORMAT_A2B10G10R10_SSCALED_PACK32 -
VK_FORMAT_A2B10G10R10_UINT_PACK32 -
VK_FORMAT_A2B10G10R10_SINT_PACK32 -
VK_FORMAT_B10G11R11_UFLOAT_PACK32 -
VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 -
VK_FORMAT_X8_D24_UNORM_PACK32
-
33.1.4. Identification of Formats
A “format” is represented by a single enum value. The name of a format is usually built up by using the following pattern:
VK_FORMAT_{component-format|compression-scheme}_{numeric-format}
The component-format indicates either the size of the R, G, B, and A components (if they are present) in the case of a color format, or the size of the depth (D) and stencil (S) components (if they are present) in the case of a depth/stencil format (see below). An X indicates a component that is unused, but may be present for padding.
| Numeric format | Type-Declaration instructions | Numeric type | Description |
|---|---|---|---|
|
|
OpTypeFloat |
floating-point |
The components are unsigned normalized values in the range [0,1] |
|
|
OpTypeFloat |
floating-point |
The components are signed normalized values in the range [-1,1] |
|
|
OpTypeFloat |
floating-point |
The components are unsigned integer values that get converted to floating-point in the range [0,2n-1] |
|
|
OpTypeFloat |
floating-point |
The components are signed integer values that get converted to floating-point in the range [-2n-1,2n-1-1] |
|
|
OpTypeInt |
unsigned integer |
The components are unsigned integer values in the range [0,2n-1] |
|
|
OpTypeInt |
signed integer |
The components are signed integer values in the range [-2n-1,2n-1-1] |
|
|
OpTypeFloat |
floating-point |
The components are unsigned floating-point numbers (used by packed, shared exponent, and some compressed formats) |
|
|
OpTypeFloat |
floating-point |
The components are signed floating-point numbers |
|
|
OpTypeFloat |
floating-point |
The R, G, and B components are unsigned normalized values that represent values using sRGB nonlinear encoding, while the A component (if one exists) is a regular unsigned normalized value |
|
n is the number of bits in the component. |
|||
The suffix _PACKnn indicates that the format is packed into an underlying type with nn bits. The suffix _mPACKnn is a short-hand that indicates that the format has m groups of components (which may or may not be stored in separate planes) that are each packed into an underlying type with nn bits.
The suffix _BLOCK indicates that the format is a block-compressed format, with the representation of multiple pixels encoded interdependently within a region.
| Compression scheme | Description |
|---|---|
|
|
Block Compression. See Block-Compressed Image Formats. |
|
|
Ericsson Texture Compression. See ETC Compressed Image Formats. |
|
|
ETC2 Alpha Compression. See ETC Compressed Image Formats. |
|
|
Adaptive Scalable Texture Compression (LDR Profile). See ASTC Compressed Image Formats. |

浙公网安备 33010602011771号