Enum PixelFormat
Defines various types of pixel formats.
[DataContract]
public enum PixelFormat
- Extension Methods
Fields
A8_UNorm = 65A single-component, 8-bit unsigned normalized integer format for alpha only.
B5G5R5A1_UNorm = 86A four-component, 16-bit unsigned normalized integer format that supports 5 bits for each color channel and 1-bit alpha.
B5G6R5_UNorm = 85A three-component, 16-bit unsigned normalized integer format that supports 5 bits for blue, 6 bits for green, and 5 bits for red.
B8G8R8A8_Typeless = 90A four-component, 32-bit format that supports 8 bits for each color channel and 8-bit alpha.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.B8G8R8A8_UNorm = 87A four-component, 32-bit unsigned normalized integer format that supports 8 bits for each color channel and 8-bit alpha.
B8G8R8A8_UNorm_SRgb = 91A four-component, 32-bit unsigned normalized integer format that supports 8 bits for each color channel and 8-bit alpha, where the data is stored in sRGB color space, and the GPU will automatically convert it to linear space when sampling in a shader.
B8G8R8X8_Typeless = 92A four-component, 32-bit format that supports 8 bits for each color channel, and 8 bits are unused.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.B8G8R8X8_UNorm = 88A four-component, 32-bit unsigned normalized integer format that supports 8 bits for each color channel and a remaining unused 8-bit part.
B8G8R8X8_UNorm_SRgb = 93A four-component, 32-bit unsigned-normalized standard RGB format that supports 8 bits for each color channel, and 8 bits are unused. , where the data is stored in sRGB color space, and the GPU will automatically convert it to linear space when sampling in a shader.
BC1_Typeless = 70A four-component, 64-bit block-compression format using the BC1 encoding, where the alpha channel is optionally encoded in 1 bit (either fully opaque or fully transparent), and the RGB color is encoded in 2 bits per pixel to select from a 4-color (or 3-color + transparent) color palette.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC1 format is tipically used for diffuse maps that do not require alpha transparency or where the alpha channel is not important.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.BC1_UNorm = 71A four-component, 64-bit unsigned normalized integer block-compression format using the BC1 encoding, where the alpha channel is optionally encoded in 1 bit (either fully opaque or fully transparent), and the RGB color is encoded in 2 bits per pixel to select from a 4-color (or 3-color + transparent) color palette.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC1 format is tipically used for diffuse maps that do not require alpha transparency or where the alpha channel is not important.BC1_UNorm_SRgb = 72A four-component, 64-bit unsigned normalized integer block-compression format for sRGB data using the BC1 encoding, where the alpha channel is optionally encoded in 1 bit (either fully opaque or fully transparent), and the RGB color is encoded in 2 bits per pixel to select from a 4-color (or 3-color + transparent) color palette.
The data is stored in sRGB color space, and the GPU will automatically convert it to linear space when sampling in a shader.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC1 format is tipically used for diffuse maps that do not require alpha transparency or where the alpha channel is not important.BC2_Typeless = 73A four-component, 128-bit block-compression format using the BC2 encoding, where the alpha channel is encoded in 4 bits (for 16 levels of transparency, quantized, not interpolated), and the RGB color is encoded in 2 bits per pixel to select from a 4-color color palette.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC2 format is tipically used for UI, decals, or sharp masks, although it is now considered somewhat outdated.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.BC2_UNorm = 74A four-component, 128-bit unsigned normalized integer block-compression format using the BC2 encoding, where the alpha channel is encoded in 4 bits (for 16 levels of transparency, quantized, not interpolated), and the RGB color is encoded in 2 bits per pixel to select from a 4-color color palette.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC2 format is tipically used for UI, decals, or sharp masks, although it is now considered somewhat outdated.BC2_UNorm_SRgb = 75A four-component, 128-bit unsigned normalized integer block-compression format for sRGB data using the BC2 encoding, where the alpha channel is encoded in 4 bits (for 16 levels of transparency, quantized, not interpolated), and the RGB color is encoded in 2 bits per pixel to select from a 4-color color palette.
The data is stored in sRGB color space, and the GPU will automatically convert it to linear space when sampling in a shader.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC2 format is tipically used for UI, decals, or sharp masks, although it is now considered somewhat outdated.BC3_Typeless = 76A four-component, 128-bit block-compression format using the BC3 encoding, where the alpha channel is encoded as two 8-bit alpha endpoints and 3 bits per pixel to select from 6 interpolated alpha values, and the RGB color is encoded in 2 bits per pixel to select from a 4-color color palette.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC3 format is tipically used for smooth and soft transparency, like foliage, shadows, hair, or smoke.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.BC3_UNorm = 77A four-component, 128-bit unsigned normalized integer block-compression format using the BC3 encoding, where the alpha channel is encoded as two 8-bit alpha endpoints and 3 bits per pixel to select from 6 interpolated alpha values, and the RGB color is encoded in 2 bits per pixel to select from a 4-color color palette.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC3 format is tipically used for smooth and soft transparency, like foliage, shadows, hair, or smoke.BC3_UNorm_SRgb = 78A four-component, 128-bit unsigned normalized integer block-compression format for sRGB data using the BC3 encoding, where the alpha channel is encoded as two 8-bit alpha endpoints and 3 bits per pixel to select from 6 interpolated alpha values, and the RGB color is encoded in 2 bits per pixel to select from a 4-color color palette.
The data is stored in sRGB color space, and the GPU will automatically convert it to linear space when sampling in a shader.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC3 format is tipically used for smooth and soft transparency, like foliage, shadows, hair, or smoke.BC4_SNorm = 81A single-component, 64-bit signed normalized integer block-compression format using the BC4 encoding, where the data is encoded as two 8-bit endpoints and 3 bits per pixel to select from 6 interpolated values.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC4 format is tipically used for grayscale Textures, smooth masks, or heightmaps.BC4_Typeless = 79A single-component, 64-bit block-compression format using the BC4 encoding, where the data is encoded as two 8-bit endpoints and 3 bits per pixel to select from 6 interpolated values.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC4 format is tipically used for grayscale Textures, smooth masks, or heightmaps.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.BC4_UNorm = 80A single-component, 64-bit unsigned normalized integer block-compression format using the BC4 encoding, where the data is encoded as two 8-bit endpoints and 3 bits per pixel to select from 6 interpolated values.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC4 format is tipically used for grayscale Textures, smooth masks, or heightmaps.BC5_SNorm = 84A two-component, 128-bit signed normalized integer block-compression format using the BC5 encoding, where for each channel the data is encoded as two 8-bit endpoints and 3 bits per pixel to select from 6 interpolated values. This is essentially a BC4 format for each channel.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC5 format is tipically used for dual-channel data like normal maps (X and Y) or vector fields.BC5_Typeless = 82A two-component, 128-bit block-compression format using the BC5 encoding, where for each channel the data is encoded as two 8-bit endpoints and 3 bits per pixel to select from 6 interpolated values. This is essentially a BC4 format for each channel.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC5 format is tipically used for dual-channel data like normal maps (X and Y) or vector fields.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.BC5_UNorm = 83A two-component, 128-bit unsigned normalized integer block-compression format using the BC5 encoding, where for each channel the data is encoded as two 8-bit endpoints and 3 bits per pixel to select from 6 interpolated values. This is essentially a BC4 format for each channel.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC5 format is tipically used for dual-channel data like normal maps (X and Y) or vector fields.BC6H_Sf16 = 96A three-component, 128-bit signed floating-point block-compression format for full-range HDR data using the BC6H encoding, where the color channels are encoded as 16-bit Half values and selected and interpolated according to the BC6H algorithm.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC6H format is best used for HDR environment maps, lightprobes, or any Texture with values beyond the [0,1] range.BC6H_Typeless = 94A three-component, 128-bit block-compression format for HDR data using the BC6H encoding, where the color channels are encoded as 16-bit Half values and selected and interpolated according to the BC6H algorithm.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC6H format is best used for HDR environment maps, lightprobes, or any Texture with values beyond the [0,1] range.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.BC6H_Uf16 = 95A three-component, 128-bit unsigned floating-point block-compression format for positive-only HDR data using the BC6H encoding, where the color channels are encoded as 16-bit Half values and selected and interpolated according to the BC6H algorithm.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC6H format is best used for HDR environment maps, lightprobes, or any Texture with values beyond the [0,1] range.BC7_Typeless = 97A three- or four-component, 128-bit block-compression format using the BC7 encoding, where it can encode the RGB channels and an optional 1-8-bit alpha channel according to the BC7 algorithm.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC7 format is best for high-quality color Textures, like albedo maps, UI, or detailed color surfaces.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.BC7_UNorm = 98A three- or four-component, 128-bit unsigned normalized integer block-compression format using the BC7 encoding, where it can encode the RGB channels and an optional 1-8-bit alpha channel according to the BC7 algorithm.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC7 format is best for high-quality color Textures, like albedo maps, UI, or detailed color surfaces.BC7_UNorm_SRgb = 99A three- or four-component, 128-bit unsigned normalized integer block-compression format for sRGB data using the BC7 encoding, where it can encode the RGB channels and an optional 1-8-bit alpha channel according to the BC7 algorithm.
The data is stored in sRGB color space, and the GPU will automatically convert it to linear space when sampling in a shader.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
The BC7 format is best for high-quality color Textures, like albedo maps, UI, or detailed color surfaces.D16_UNorm = 55A single-component, 16-bit unsigned normalized integer format that supports 16 bits for depth.
D24_UNorm_S8_UInt = 45A two-component, 32-bit format consisting of a 24-bit unsigned normalized integer component for depth and a 8-bit unsigned integer component for stencil.
D32_Float = 40A single-component, 32-bit floating-point format that supports 32 bits for depth.
D32_Float_S8X24_UInt = 20A composite format consisting of a 32-bit floating-point component intended for depth, plus a 8-bit unsigned-integer component intended for stencil values in an additional 32-bit part where the last 24 bits are unused (for padding).
EAC_R11_Signed = 1093A single-component, 64-bit block-compression format using the EAC R11 signed encoding, where the red channel is encoded as a signed 11-bit value per pixel.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
Typically used for single-channel signed data such as normal maps or vector fields (reconstructing the second component).EAC_R11_Unsigned = 1092A single-component, 64-bit block-compression format using the EAC R11 unsigned encoding, where the red channel is encoded as an unsigned 11-bit value per pixel.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
Typically used for single-channel data such as heightmaps or masks.EAC_RG11_Signed = 1095A two-component, 128-bit block-compression format using the EAC RG11 signed encoding, where the red and green channels are encoded as signed 11-bit values per pixel.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
Used for dual-channel signed data such as normal maps or vector fields.EAC_RG11_Unsigned = 1094A two-component, 128-bit block-compression format using the EAC RG11 unsigned encoding, where the red and green channels are encoded as unsigned 11-bit values per pixel.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
Used for dual-channel data such as normal maps or vector fields.ETC1 = 1088A three-component, 64-bit block-compression format using the ETC1 encoding, where the RGB color is encoded in 4 bits per pixel. Does not support alpha.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
Commonly used for opaque textures on mobile devices.ETC2_RGB = 1089A three-component, 64-bit block-compression format using the ETC2 RGB encoding, where the RGB color is encoded in 4 bits per pixel. Does not support alpha.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
Widely supported on modern mobile and embedded GPUs for general color data.ETC2_RGBA = 1090A four-component, 128-bit block-compression format using the ETC2 RGBA encoding, where the RGB color is encoded in 4 bits per pixel and the alpha channel is encoded in 4 bits per pixel.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
Used for Textures requiring full alpha support on mobile and embedded devices.ETC2_RGBA_SRgb = 1096A four-component, 128-bit block-compression format using the ETC2 RGBA encoding for sRGB data, where the RGB color is encoded in 4 bits per pixel and the alpha channel is encoded in 4 bits per pixel.
The data is stored in sRGB color space, and the GPU will automatically convert it to linear space when sampling in a shader.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
Tipically used for color textures with transparency on mobile and embedded devices.ETC2_RGB_A1 = 1091A four-component, 64-bit block-compression format using the ETC2 RGB+A1 encoding, where the RGB color is encoded in 4 bits per pixel and the alpha channel is encoded as a single bit (1-bit alpha mask).
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
Suitable for Textures with simple transparency (fully opaque or fully transparent pixels).ETC2_RGB_SRgb = 1097A three-component, 64-bit block-compression format using the ETC2 RGB encoding for sRGB data, where the RGB color is encoded in 4 bits per pixel.
The data is stored in sRGB color space, and the GPU will automatically convert it to linear space when sampling in a shader.
The block-compression formats operate only on 4x4 blocks, so Textures using this format must have dimensions that are multiples of 4.
Tipically used for color textures without alpha on mobile and embedded devices.G8R8_G8B8_UNorm = 69A four-component, 32-bit unsigned normalized integer format packed in a form analogous to the YUY2 format. Each 32-bit block describes a pair of pixels (
RGB,RGB) with 8-bit RGB components where the R/B values are repeated, and the G values are unique to each pixel.None = 0The format is not known.
R10G10B10A2_Typeless = 23A four-component, 32-bit format that supports 10 bits for each color and 2 bits for alpha.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R10G10B10A2_UInt = 25A four-component, 32-bit unsigned integer format that supports 10 bits for each color and 2 bits for alpha.
R10G10B10A2_UNorm = 24A four-component, 32-bit unsigned normalized integer format that supports 10 bits for each color and 2 bits for alpha.
R10G10B10_Xr_Bias_A2_UNorm = 89A four-component, 32-bit format consisting of 10 bits for each of the red, green, and blue channels encoded as 2.8-biased fixed-point numbers and 2-bit alpha channel. The XR bias applies a fixed scale and offset to the red channel to better represent HDR luminance. This is useful when tone mapping has already been applied and the image is ready for display.
This format is intended for use as a presentation format, particularly for High Dynamic Range (HDR) content. It is read-only for shaders and not renderable directly. Instead, it is typically converted from a compatible format (like R10G10B10A2_UNorm).R11G11B10_Float = 26A three-component, 32-bit partial-precision floating-point format that supports 11 bits for the red and green channels and 10 bits for the blue channel.
It uses a variant ofs10e5(sign bit, 10-bit mantissa, and 5-bit biased (15) exponent), but there are no sign bits, and there is a 5-bit biased (15) exponent for each channel, 6-bit mantissa for R and G, and a 5-bit mantissa for B.R16G16B16A16_Float = 10A four-component, 64-bit floating-point format that supports 16 bits per channel including alpha.
R16G16B16A16_SInt = 14A four-component, 64-bit signed integer format that supports 16 bits per channel including alpha.
R16G16B16A16_SNorm = 13A four-component, 64-bit signed normalized integer format that supports 16 bits per channel including alpha.
R16G16B16A16_Typeless = 9A four-component, 64-bit format that supports 16 bits per channel including alpha.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R16G16B16A16_UInt = 12A four-component, 64-bit unsigned integer format that supports 16 bits per channel including alpha.
R16G16B16A16_UNorm = 11A four-component, 64-bit unsigned normalized integer format that supports 16 bits per channel including alpha.
R16G16_Float = 34A two-component, 32-bit floating-point format that supports 16 bits for the red channel and 16 bits for the green channel.
R16G16_SInt = 38A two-component, 32-bit signed integer format that supports 16 bits for the red channel and 16 bits for the green channel.
R16G16_SNorm = 37A two-component, 32-bit signed normalized integer format that supports 16 bits for the red channel and 16 bits for the green channel.
R16G16_Typeless = 33A two-component, 32-bit format that supports 16 bits for the red channel and 16 bits for the green channel.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R16G16_UInt = 36A two-component, 32-bit unsigned integer format that supports 16 bits for the red channel and 16 bits for the green channel.
R16G16_UNorm = 35A two-component, 32-bit unsigned normalized integer format that supports 16 bits for the red channel and 16 bits for the green channel.
R16_Float = 54A single-component, 16-bit floating-point format that supports 16 bits for the red channel.
R16_SInt = 59A single-component, 16-bit signed integer format that supports 16 bits for the red channel.
R16_SNorm = 58A single-component, 16-bit signed normalized integer format that supports 16 bits for the red channel.
R16_Typeless = 53A single-component, 16-bit format that supports 16 bits for the red channel.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R16_UInt = 57A single-component, 16-bit unsigned integer format that supports 16 bits for the red channel.
R16_UNorm = 56A single-component, 16-bit unsigned normalized integer format that supports 16 bits for the red channel.
R1_UNorm = 66A single-component, 1-bit unsigned normalized integer format that supports 1 bit for the red channel.
R24G8_Typeless = 44A two-component, 32-bit format that supports 24 bits for the red channel and 8 bits for the green channel.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R24_UNorm_X8_Typeless = 46A two-component, 32-bit format consisting of a 24-bit unsigned normalized integer red component and a 8-bit typeless component.
This format has a typeless component, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R32G32B32A32_Float = 2A four-component, 128-bit floating-point format that supports 32 bits per channel including alpha.
R32G32B32A32_SInt = 4A four-component, 128-bit signed integer format that supports 32 bits per channel including alpha.
R32G32B32A32_Typeless = 1A four-component, 128-bit format that supports 32 bits per channel including alpha.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R32G32B32A32_UInt = 3A four-component, 128-bit unsigned integer format that supports 32 bits per channel including alpha.
R32G32B32_Float = 6A three-component, 96-bit floating-point format that supports 32 bits per channel.
R32G32B32_SInt = 8A three-component, 96-bit signed integer format that supports 32 bits per channel.
R32G32B32_Typeless = 5A three-component, 96-bit format that supports 32 bits per channel.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R32G32B32_UInt = 7A three-component, 96-bit unsigned integer format that supports 32 bits per channel.
R32G32_Float = 16A two-component, 64-bit floating-point format that supports 32 bits for the red channel and 32 bits for the green channel.
R32G32_SInt = 18A two-component, 64-bit signed integer format that supports 32 bits for the red channel and 32 bits for the green channel.
R32G32_Typeless = 15A two-component, 64-bit format that supports 32 bits for the red channel and 32 bits for the green channel.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R32G32_UInt = 17A two-component, 64-bit unsigned integer format that supports 32 bits for the red channel and 32 bits for the green channel.
R32G8X24_Typeless = 19A two-component, 64-bit format that supports 32 bits for the red channel, 8 bits for the green channel, and 24 bits are unused.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R32_Float = 41A single-component, 32-bit floating-point format that supports 32 bits for the red channel.
R32_Float_X8X24_Typeless = 21A composite format consisting of a 32-bit floating-point component for the red channel, and two typeless components (8-bit and 24-bit respectively) in an additional 32-bit part.
This is commonly used to create Views for Depth-Stencil Buffers where a shader needs to access the depth.
This format has typeless components, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R32_SInt = 43A single-component, 32-bit signed integer format that supports 32 bits for the red channel.
R32_Typeless = 39A single-component, 32-bit format that supports 32 bits for the red channel.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R32_UInt = 42A single-component, 32-bit unsigned integer format that supports 32 bits for the red channel.
R8G8B8A8_SInt = 32A four-component, 32-bit signed integer format that supports 8 bits per channel including alpha.
R8G8B8A8_SNorm = 31A four-component, 32-bit signed normalized integer format that supports 8 bits per channel including alpha.
R8G8B8A8_Typeless = 27A four-component, 32-bit format that supports 8 bits per channel including alpha.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R8G8B8A8_UInt = 30A four-component, 32-bit unsigned integer format that supports 8 bits per channel including alpha.
R8G8B8A8_UNorm = 28A four-component, 32-bit unsigned normalized integer format that supports 8 bits per channel including alpha.
R8G8B8A8_UNorm_SRgb = 29A four-component, 32-bit unsigned normalized integer format that supports 8 bits per channel including alpha, where the data is stored in sRGB color space, and the GPU will automatically convert it to linear space when sampling in a shader.
R8G8_B8G8_UNorm = 68A four-component, 32-bit unsigned normalized integer format packed in a form analogous to the UYVY format. Each 32-bit block describes a pair of pixels (
RGB,RGB) with 8-bit RGB components where the R/B values are repeated, and the G values are unique to each pixel.R8G8_SInt = 52A two-component, 16-bit signed integer format that supports 8 bits for the red channel and 8 bits for the green channel.
R8G8_SNorm = 51A two-component, 16-bit signed normalized integer format that supports 8 bits for the red channel and 8 bits for the green channel.
R8G8_Typeless = 48A two-component, 16-bit format that supports 8 bits for the red channel and 8 bits for the green channel.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R8G8_UInt = 50A two-component, 16-bit unsigned integer format that supports 8 bits for the red channel and 8 bits for the green channel.
R8G8_UNorm = 49A two-component, 16-bit unsigned normalized integer format that supports 8 bits for the red channel and 8 bits for the green channel.
R8_SInt = 64A single-component, 8-bit signed integer format that supports 8 bits for the red channel.
R8_SNorm = 63A single-component, 8-bit signed normalized integer format that supports 8 bits for the red channel.
R8_Typeless = 60A single-component, 8-bit format that supports 8 bits for the red channel.
This format is typeless, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.R8_UInt = 62A single-component, 8-bit unsigned integer format that supports 8 bits for the red channel.
R8_UNorm = 61A single-component, 8-bit unsigned normalized integer format that supports 8 bits for the red channel.
A three-component, 32-bit partial-precision floating-point format that supports 9 bits per channel with the same 5-bit shared exponent.
It uses a variant ofs10e5(sign bit, 10-bit mantissa, and 5-bit biased (15) exponent), but there are no sign bits, and the exponent is shared.X24_Typeless_G8_UInt = 47A two-component, 32-bit format consisting of a 24-bit typeless component and a 8-bit unsigned integer green component.
This format has a typeless component, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.X32_Typeless_G8X24_UInt = 22A composite format consisting of an unused 32-bit typeless component, plus an 8-bit unsigned-integer component in an additional 32-bit part where the last 24 bits are unused (for padding).
This is commonly used to create Views for Depth-Stencil Buffers where a shader needs to access the stencil values.
This format has typeless components, i.e. it just specifies the memory layout, but can be used for different types of data, such as floating-point, unsigned-integer, or signed-integer.
Remarks
Pixel formats describe the layout and type of data stored in a pixel, including the number of channels, bits per channel, and whether the data is normalized or typeless.
The suffixes in the names indicate the type of data:
| UNorm (Unsigned Normalized) |
Values are stored as unsigned integers, but interpreted as floating-point values between 0.0 and 1.0.
For example, R8G8B8A8_UNorm stores 8-bit values per channel, where 0 maps to 0.0 and 255 maps to 1.0.
Common for color Textures and Render Targets. |
| SNorm (Signed Normalized) |
Values are stored as signed integers, but interpreted as floating-point values between -1.0 and 1.0.
For example, R8G8_SNorm stores 8-bit values per channel, where -128 to -1.0 and 127 to ~1.0.
Useful for storing normals or vectors. |
| Typeless |
The format is not fully defined —it’s just a memory layout.
Multiple Views (e.g., Shader Resource Views, Render Target Views) can be created over a Graphics Resource with a typeless format with different interpretations. For example, R8G8B8A8_Typeless can be viewed as UNorm, UNorm_SRgb,
or UInt, depending on how the resource is bound.
Great for flexibility, like rendering in linear space and sampling in sRGB. |
| UInt / SInt |
Unsigned (UInt) or signed (SInt) integer values. No normalization —values are used as-is.
Often used for IDs, masks, or counters. |
| Float |
Stores values as IEEE floating-point numbers.
Used when precision and range are important, like Depth Buffers or HDR color. |
| SRgb |
Stores color data in the sRGB color space.
When sampling, the GPU automatically converts it to linear space, and when writing the data, it converts it back to sRGB
(applies gamma correction).
It is typically used for textures that represent colors. |