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
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
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
(TODO)
================================================================================
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