Skip to content

Instantly share code, notes, and snippets.

@floooh
Last active September 8, 2021 13:05
Show Gist options
  • Save floooh/1f0473afad0723dc63f81b7bf1f7e466 to your computer and use it in GitHub Desktop.
Save floooh/1f0473afad0723dc63f81b7bf1f7e466 to your computer and use it in GitHub Desktop.
3D API pixel formats

METAL

see: https://developer.apple.com/documentation/metal/mtlpixelformat?language=objc

A8Unorm
R8Unorm
R8Unorm_sRGB
R8Snorm
R8Uint
R8sint

R16Unorm
R16Snorm
R16Uint
R16Sint
R16Float

RG8Unorm
RG8Unorm_sRGB
RG8Snorm
RG8Uint
RG8Sint

B5G6R5Unorm
A1BGR5Unorm
ABGR4Unorm
BGR5A1Unorm

R32Uint
R32Sint
R32float

RG16Unorm
RG16Snorm
RG16Uint
RG16Sint
RG16Float

RGBA8Unorm
RGBA8Unorm_sRGB
RGBA8Snorm
RGBA8Uint
RGBA8Sint
BGRA8Unorm
BGRA8Unorm_sRGB

BGR10A2Unorm
RGB10A2Unorm
RGB10A2Uint
RG11B10Float
RGB9E5Float

RG32Uint
RG32Sint
RG32Float
RGBA16Unorm
RGBA16Snorm
RGBA16Uint
RGBA16Sint
RGBA16Float

RGBA32Uint
RGBA32Sint
RGBA32Float

PVRTC_RGB_2BPP
PVRTC_RGB_2BPP_sRGB
PVRTV_RGB_4BPP
PVRTC_RGB_4BPP_sRGB
PVRTC_RGBA_2BPP
PVRTC_RGBA_4BPP
PVRTC_RGBA_4BPP_sRGB

EAC_R11Unorm
EAC_R11Snorm
EAC_RG11Unorm
EAC_RG11Snorm
EAC_RGBA8
EAC_RGBA8_sRGB
ETC2_RGB8
ETC2_RGB8_sRGB
ETC_RGB8A1
ETC2_RGBA8A1_sRGB

...tons of ATC formats...

BC1_RGBA
BC1_RGBA_sRGB
BC2_RGBA
BC2_RGBA_sRGB
BC3_RGBA
BC3_RGBA_sRGB
BC4_RUnorm
BC4_RSnorm
BC5_RGUnorm
BC5_RGSnorm
BC6H_RGBFloat
BC6H_RGBUFloat
BC7_RGBAUnorm
BC7_RGBAUnorm_sRGB

GBGR422
BGRG422

Depth16UNorm
Depth32Float
Stencil8
Depth24Unorm_Stencil8
Depth32Float_Stencil8
X32_Stencil8
X24_Stencil8

BGRA10_XR
BGRA10_XR_sRGB
BGR10_XR 
BGR10_XR_sRGB

WebGPU

see: https://gpuweb.github.io/gpuweb/

r8unorm
r8snorm
r8uint
r8sint

r16unorm
r16snorm
r16uint
r16sint
r16float
rg8unorm
rg8snorm
rg8uint
rg8sint
    
r32uint
r32sint
r32float
rg16unorm
rg16snorm
rg16uint
rg16sint
rg16float
rgba8unorm
rgba8unorm-srgb
rgba8snorm
rgba8uint
rgba8sint
bgra8unorm
bgra8unorm-srgb
rgb10a2unorm
rg11b10float

rg32uint
rg32sint
rg32float
rgba16unorm
rgba16snorm
rgba16uint
rgba16sint
rgba16float

rgba32uint
rgba32sint
rgba32float

depth32float
depth24plus
depth24plus-stencil8

D3D11

see: https://docs.microsoft.com/en-us/windows/win32/api/dxgiformat/ne-dxgiformat-dxgi_format

(without the TYPELESS formats)

DXGI_FORMAT_R32G32B32A32_FLOAT
DXGI_FORMAT_R32G32B32A32_UINT
DXGI_FORMAT_R32G32B32A32_SINT
DXGI_FORMAT_R32G32B32_FLOAT
DXGI_FORMAT_R32G32B32_UINT
DXGI_FORMAT_R32G32B32_SINT
DXGI_FORMAT_R16G16B16A16_FLOAT
DXGI_FORMAT_R16G16B16A16_UNORM
DXGI_FORMAT_R16G16B16A16_UINT
DXGI_FORMAT_R16G16B16A16_SNORM
DXGI_FORMAT_R16G16B16A16_SINT
DXGI_FORMAT_R32G32_FLOAT
DXGI_FORMAT_R32G32_UINT
DXGI_FORMAT_R32G32_SINT
DXGI_FORMAT_D32_FLOAT_S8X24_UINT
DXGI_FORMAT_R10G10B10A2_UNORM
DXGI_FORMAT_R10G10B10A2_UINT
DXGI_FORMAT_R11G11B10_FLOAT
DXGI_FORMAT_R8G8B8A8_UNORM
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
DXGI_FORMAT_R8G8B8A8_UINT
DXGI_FORMAT_R8G8B8A8_SNORM
DXGI_FORMAT_R8G8B8A8_SINT
DXGI_FORMAT_R16G16_FLOAT
DXGI_FORMAT_R16G16_UNORM
DXGI_FORMAT_R16G16_UINT
DXGI_FORMAT_R16G16_SNORM
DXGI_FORMAT_R16G16_SINT
DXGI_FORMAT_D32_FLOAT
DXGI_FORMAT_R32_FLOAT
DXGI_FORMAT_R32_UINT
DXGI_FORMAT_R32_SINT
DXGI_FORMAT_D24_UNORM_S8_UINT
DXGI_FORMAT_R8G8_UNORM
DXGI_FORMAT_R8G8_UINT
DXGI_FORMAT_R8G8_SNORM
DXGI_FORMAT_R8G8_SINT
DXGI_FORMAT_R16_FLOAT
DXGI_FORMAT_D16_UNORM
DXGI_FORMAT_R16_UNORM
DXGI_FORMAT_R16_UINT
DXGI_FORMAT_R16_SNORM
DXGI_FORMAT_R16_SINT
DXGI_FORMAT_R8_UNORM
DXGI_FORMAT_R8_UINT
DXGI_FORMAT_R8_SNORM
DXGI_FORMAT_R8_SINT
DXGI_FORMAT_A8_UNORM
DXGI_FORMAT_R1_UNORM
DXGI_FORMAT_R9G9B9E5_SHAREDEXP
DXGI_FORMAT_R8G8_B8G8_UNORM
DXGI_FORMAT_G8R8_G8B8_UNORM
DXGI_FORMAT_BC1_UNORM
DXGI_FORMAT_BC1_UNORM_SRGB
DXGI_FORMAT_BC2_UNORM
DXGI_FORMAT_BC2_UNORM_SRGB
DXGI_FORMAT_BC3_UNORM
DXGI_FORMAT_BC3_UNORM_SRGB
DXGI_FORMAT_BC4_UNORM
DXGI_FORMAT_BC4_SNORM
DXGI_FORMAT_BC5_UNORM
DXGI_FORMAT_BC5_SNORM
DXGI_FORMAT_B5G6R5_UNORM
DXGI_FORMAT_B5G5R5A1_UNORM
DXGI_FORMAT_B8G8R8A8_UNORM
DXGI_FORMAT_B8G8R8X8_UNORM
DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM
DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
DXGI_FORMAT_B8G8R8X8_UNORM_SRGB
DXGI_FORMAT_BC6H_UF16
DXGI_FORMAT_BC6H_SF16
DXGI_FORMAT_BC7_UNORM
DXGI_FORMAT_BC7_UNORM_SRGB
DXGI_FORMAT_AYUV
DXGI_FORMAT_Y410
DXGI_FORMAT_Y416
DXGI_FORMAT_NV12
DXGI_FORMAT_P010
DXGI_FORMAT_P016
DXGI_FORMAT_420_OPAQUE
DXGI_FORMAT_YUY2
DXGI_FORMAT_Y210
DXGI_FORMAT_Y216
DXGI_FORMAT_NV11
DXGI_FORMAT_AI44
DXGI_FORMAT_IA44
DXGI_FORMAT_P8
DXGI_FORMAT_A8P8
DXGI_FORMAT_B4G4R4A4_UNORM
DXGI_FORMAT_P208
DXGI_FORMAT_V208
DXGI_FORMAT_V408

WebGL / GLES2

(TODO)

WebGL2 / GLES3

================================================================================
WebGL2/GLES3 (https://www.khronos.org/registry/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml)
================================================================================
Internal            Format          Type                    Renderable      Filterable
GL_R8               GL_RED          GL_UNSIGNED_BYTE        Y               Y
GL_R8_SNORM         GL_RED          GL_BYTE                 -               Y
GL_R16F             GL_RED          GL_HALF_FLOAT           -               Y
GL_R32F             GL_RED          GL_FLOAT                -               -
GL_R8UI             GL_RED_INTEGER  GL_UNSIGNED_BYTE        Y               -
GL_R8I              GL_RED_INTEGER  GL_BYTE                 Y               -
GL_R16UI            GL_RED_INTEGER  GL_UNSIGNED_SHORT       Y               -
GL_R16I             GL_RED_INTEGER  GL_SHORT                Y               -
GL_R32UI            GL_RED_INTEGER  GL_UNSIGNED_INT         Y               -
GL_R32I             GL_RED_INTEGER  GL_INT                  Y               -
GL_RG8              GL_RG           GL_UNSIGNED_BYTE        Y               Y
GL_RG8_SNORM        GL_RG           GL_BYTE                 -               Y
GL_RG16F            GL_RG           GL_HALF_FLOAT           -               Y 
GL_RG32F            GL_RG           GL_FLOAT                -               -
GL_RG8UI            GL_RG_INTEGER   GL_UNSIGNED_BYTE        Y               -
GL_RG8I             GL_RG_INTEGER   GL_BYTE                 Y               -
GL_RG16UI           GL_RG_INTEGER   GL_UNSIGNED_SHORT       Y               -
GL_RG16I            GL_RG_INTEGER   GL_SHORT                Y               -
GL_RG32UI           GL_RG_INTEGER   GL_UNSIGNED_INT         Y               -
GL_RG32I            GL_RG_INTEGER   GL_INT                  Y               -
GL_RGB8             GL_RGB          GL_UNSIGNED_BYTE        Y               Y
GL_SRGB8            GL_RGB          GL_UNSIGNED_BYTE        -               Y
GL_RGB565           GL_RGB          GL_UNSIGNED_SHORT_5_6_5 Y               Y 
GL_RGB8_SNORM       GL_RGB          GL_BYTE                 -               Y 
GL_R11F_G11F_B10F   GL_RGB          GL_UNSIGNED_INT_...REV  -               Y
GL_RGB9_E5          GL_RGB          GL_UNSIGNED_INT_...REV  -               Y 
GL_RGB16F           GL_RGB          GL_HALF_FLOAT           -               Y
GL_RGB32F           GL_RGB          GL_FLOAT                -               -
GL_RGB8UI           GL_RGB_INTEGER  GL_UNSIGNED_BYTE        -               -
GL_RGB8I            GL_RGB_INTEGER  GL_BYTE                 -               -
GL_RGB16UI          GL_RGB_INTEGER  GL_UNSIGNED_SHORT       -               -
GL_RGB16I           GL_RGB_INTEGER  GL_SHORT                -               -
GL_RGB32UI          GL_RGB_INTEGER  GL_UNSIGNED_INT         -               -
GL_RGB32I           GL_RGB_INTEGER  GL_INT                  -               -
GL_RGBA8            GL_RGBA         GL_UNSIGNED_BYTE        Y               Y 
GL_SRGB8_ALPHA8     GL_RGBA         GL_UNSIGNED_BYTE        Y               Y 
GL_RGBA8_SNORM      GL_RGBA         GL_BYTE                 -               Y 
GL_RGB5_A1          GL_RGBA         GL_UNSIGNED_SHORT_5...1 Y               Y 
GL_RGBA4            GL_RGBA         GL_UNSIGNED_SHORT_4...4 Y               Y 
GL_RGB10_A2         GL_RGBA         GL_UNSIGNED_INT_...REV  Y               Y 
GL_RGBA16F          GL_RGBA         GL_HALF_FLOAT           -               Y 
GL_RGBA32F          GL_RGBA         GL_FLOAT                -               -
GL_RGBA8UI          GL_RGBA_INTEGER GL_UNSIGNED_BYTE        Y               -
GL_RGBA8I           GL_RGBA_INTEGER GL_BYTE                 Y               -
GL_RGB10_A2UI       GL_RGBA_INTEGER GL_UNSIGNED_INT_...REV  Y               -
GL_RGBA16UI         GL_RGBA_INTEGER GL_UNSIGNED_SHORT       Y               -
GL_RGBA16I          GL_RGBA_INTEGER GL_SHORT                Y               - 
GL_RGBA32I          GL_RGBA_INTEGER GL_INT                  Y               -
GL_RGBA32UI         GL_RGBA_INTEGER GL_UNSIGNED_INT         Y               -

GL_DEPTH_COMPONENT16
GL_DEPTH_COMPONENT24
GL_DEPTH_COMPONENT32F
GL_DEPTH24_STENCIL8
GL_DEPTH32F_STENCIL8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment