using AssetRipper.SourceGenerated.Enums; namespace AssetRipper.SourceGenerated.Extensions; public static class GraphicsFormatExtensions { /// /// Converts to . /// /// /// Note: Some conversions are not entirely accurate. For example, SRGB and UNorm are treated as the same. /// /// The to convert. /// The equivalent to the parameter. /// There is no direct conversion for the format. /// The format was an invalid value. public static TextureFormat ToTextureFormat(this GraphicsFormat format) => format switch { GraphicsFormat.None => throw new NotSupportedException(), GraphicsFormat.R8_SRGB => TextureFormat.R8, GraphicsFormat.R8G8_SRGB => TextureFormat.RG16, GraphicsFormat.R8G8B8_SRGB => TextureFormat.RGB24, GraphicsFormat.R8G8B8A8_SRGB => TextureFormat.RGBA32, GraphicsFormat.R8_UNorm => TextureFormat.R8, GraphicsFormat.R8G8_UNorm => TextureFormat.RG16, GraphicsFormat.R8G8B8_UNorm => TextureFormat.RGB24, GraphicsFormat.R8G8B8A8_UNorm => TextureFormat.RGBA32, GraphicsFormat.R8_SNorm => TextureFormat.R8_SIGNED, GraphicsFormat.R8G8_SNorm => TextureFormat.RG16_SIGNED, GraphicsFormat.R8G8B8_SNorm => TextureFormat.RGB24_SIGNED, GraphicsFormat.R8G8B8A8_SNorm => TextureFormat.RGBA32_SIGNED, GraphicsFormat.R8_UInt => TextureFormat.R8, GraphicsFormat.R8G8_UInt => TextureFormat.RG16, GraphicsFormat.R8G8B8_UInt => TextureFormat.RGB24, GraphicsFormat.R8G8B8A8_UInt => TextureFormat.RGBA32, GraphicsFormat.R8_SInt => TextureFormat.R8_SIGNED, GraphicsFormat.R8G8_SInt => TextureFormat.RG16_SIGNED, GraphicsFormat.R8G8B8_SInt => TextureFormat.RGB24_SIGNED, GraphicsFormat.R8G8B8A8_SInt => TextureFormat.RGBA32_SIGNED, GraphicsFormat.R16_UNorm => TextureFormat.R16, GraphicsFormat.R16G16_UNorm => TextureFormat.RG32, GraphicsFormat.R16G16B16_UNorm => TextureFormat.RGB48, GraphicsFormat.R16G16B16A16_UNorm => TextureFormat.RGBA64, GraphicsFormat.R16_SNorm => TextureFormat.R16_SIGNED, GraphicsFormat.R16G16_SNorm => TextureFormat.RG32_SIGNED, GraphicsFormat.R16G16B16_SNorm => TextureFormat.RGB48_SIGNED, GraphicsFormat.R16G16B16A16_SNorm => TextureFormat.RGBA64_SIGNED, GraphicsFormat.R16_UInt => TextureFormat.R16, GraphicsFormat.R16G16_UInt => TextureFormat.RG32, GraphicsFormat.R16G16B16_UInt => TextureFormat.RGB48, GraphicsFormat.R16G16B16A16_UInt => TextureFormat.RGBA64, GraphicsFormat.R16_SInt => TextureFormat.R16_SIGNED, GraphicsFormat.R16G16_SInt => TextureFormat.RG32_SIGNED, GraphicsFormat.R16G16B16_SInt => TextureFormat.RGB48_SIGNED, GraphicsFormat.R16G16B16A16_SInt => TextureFormat.RGBA64_SIGNED, GraphicsFormat.R32_UInt => throw new NotSupportedException(), GraphicsFormat.R32G32_UInt => throw new NotSupportedException(), GraphicsFormat.R32G32B32_UInt => throw new NotSupportedException(), GraphicsFormat.R32G32B32A32_UInt => throw new NotSupportedException(), GraphicsFormat.R32_SInt => throw new NotSupportedException(), GraphicsFormat.R32G32_SInt => throw new NotSupportedException(), GraphicsFormat.R32G32B32_SInt => throw new NotSupportedException(), GraphicsFormat.R32G32B32A32_SInt => throw new NotSupportedException(), GraphicsFormat.R16_SFloat => throw new NotSupportedException(), GraphicsFormat.R16G16_SFloat => throw new NotSupportedException(), GraphicsFormat.R16G16B16_SFloat => throw new NotSupportedException(), GraphicsFormat.R16G16B16A16_SFloat => throw new NotSupportedException(), GraphicsFormat.R32_SFloat => throw new NotSupportedException(), GraphicsFormat.R32G32_SFloat => throw new NotSupportedException(), GraphicsFormat.R32G32B32_SFloat => throw new NotSupportedException(), GraphicsFormat.R32G32B32A32_SFloat => throw new NotSupportedException(), GraphicsFormat.B8G8R8_SRGB => throw new NotSupportedException(), GraphicsFormat.B8G8R8A8_SRGB => TextureFormat.BGRA32_14, GraphicsFormat.B8G8R8_UNorm => throw new NotSupportedException(), GraphicsFormat.B8G8R8A8_UNorm => TextureFormat.BGRA32_14, GraphicsFormat.B8G8R8_SNorm => throw new NotSupportedException(), GraphicsFormat.B8G8R8A8_SNorm => TextureFormat.BGRA32_14, GraphicsFormat.B8G8R8_UInt => throw new NotSupportedException(), GraphicsFormat.B8G8R8A8_UInt => TextureFormat.BGRA32_14, GraphicsFormat.B8G8R8_SInt => throw new NotSupportedException(), GraphicsFormat.B8G8R8A8_SInt => TextureFormat.BGRA32_14, GraphicsFormat.R4G4B4A4_UNormPack16 => throw new NotSupportedException(), GraphicsFormat.B4G4R4A4_UNormPack16 => throw new NotSupportedException(), GraphicsFormat.R5G6B5_UNormPack16 => TextureFormat.RGB565, GraphicsFormat.B5G6R5_UNormPack16 => throw new NotSupportedException(), GraphicsFormat.R5G5B5A1_UNormPack16 => throw new NotSupportedException(), GraphicsFormat.B5G5R5A1_UNormPack16 => throw new NotSupportedException(), GraphicsFormat.A1R5G5B5_UNormPack16 => throw new NotSupportedException(), GraphicsFormat.E5B9G9R9_UFloatPack32 => throw new NotSupportedException(), GraphicsFormat.B10G11R11_UFloatPack32 => throw new NotSupportedException(), GraphicsFormat.A2B10G10R10_UNormPack32 => throw new NotSupportedException(), GraphicsFormat.A2B10G10R10_UIntPack32 => throw new NotSupportedException(), GraphicsFormat.A2B10G10R10_SIntPack32 => throw new NotSupportedException(), GraphicsFormat.A2R10G10B10_UNormPack32 => throw new NotSupportedException(), GraphicsFormat.A2R10G10B10_UIntPack32 => throw new NotSupportedException(), GraphicsFormat.A2R10G10B10_SIntPack32 => throw new NotSupportedException(), GraphicsFormat.A2R10G10B10_XRSRGBPack32 => throw new NotSupportedException(), GraphicsFormat.A2R10G10B10_XRUNormPack32 => throw new NotSupportedException(), GraphicsFormat.R10G10B10_XRSRGBPack32 => throw new NotSupportedException(), GraphicsFormat.R10G10B10_XRUNormPack32 => throw new NotSupportedException(), GraphicsFormat.A10R10G10B10_XRSRGBPack32 => throw new NotSupportedException(), GraphicsFormat.A10R10G10B10_XRUNormPack32 => throw new NotSupportedException(), GraphicsFormat.D16_UNorm => throw new NotSupportedException(), GraphicsFormat.D24_UNorm => throw new NotSupportedException(), GraphicsFormat.D24_UNorm_S8_UInt => throw new NotSupportedException(), GraphicsFormat.D32_SFloat => throw new NotSupportedException(), GraphicsFormat.D32_SFloat_S8_Uint => throw new NotSupportedException(), GraphicsFormat.S8_Uint => TextureFormat.Alpha8, GraphicsFormat.RGB_DXT1_SRGB => TextureFormat.DXT1, GraphicsFormat.RGB_DXT1_UNorm => TextureFormat.DXT1, GraphicsFormat.RGBA_DXT3_SRGB => TextureFormat.DXT3, GraphicsFormat.RGBA_DXT3_UNorm => TextureFormat.DXT3, GraphicsFormat.RGBA_DXT5_SRGB => TextureFormat.DXT5, GraphicsFormat.RGBA_DXT5_UNorm => TextureFormat.DXT5, GraphicsFormat.R_BC4_UNorm => TextureFormat.BC4, GraphicsFormat.R_BC4_SNorm => TextureFormat.BC4, GraphicsFormat.RG_BC5_UNorm => TextureFormat.BC5, GraphicsFormat.RG_BC5_SNorm => TextureFormat.BC5, GraphicsFormat.RGB_BC6H_UFloat => TextureFormat.BC6H, GraphicsFormat.RGB_BC6H_SFloat => TextureFormat.BC6H, GraphicsFormat.RGBA_BC7_SRGB => TextureFormat.BC7, GraphicsFormat.RGBA_BC7_UNorm => TextureFormat.BC7, GraphicsFormat.RGB_PVRTC_2Bpp_SRGB => TextureFormat.PVRTC_RGB2, GraphicsFormat.RGB_PVRTC_2Bpp_UNorm => TextureFormat.PVRTC_RGB2, GraphicsFormat.RGB_PVRTC_4Bpp_SRGB => TextureFormat.PVRTC_RGB4, GraphicsFormat.RGB_PVRTC_4Bpp_UNorm => TextureFormat.PVRTC_RGB4, GraphicsFormat.RGBA_PVRTC_2Bpp_SRGB => TextureFormat.PVRTC_RGBA2, GraphicsFormat.RGBA_PVRTC_2Bpp_UNorm => TextureFormat.PVRTC_RGBA2, GraphicsFormat.RGBA_PVRTC_4Bpp_SRGB => TextureFormat.PVRTC_RGBA4, GraphicsFormat.RGBA_PVRTC_4Bpp_UNorm => TextureFormat.PVRTC_RGBA4, GraphicsFormat.RGB_ETC_UNorm => TextureFormat.ETC_RGB4, GraphicsFormat.RGB_ETC2_SRGB => TextureFormat.ETC2_RGB, GraphicsFormat.RGB_ETC2_UNorm => TextureFormat.ETC2_RGB, GraphicsFormat.RGB_A1_ETC2_SRGB => TextureFormat.ETC2_RGBA1, GraphicsFormat.RGB_A1_ETC2_UNorm => TextureFormat.ETC2_RGBA1, GraphicsFormat.RGBA_ETC2_SRGB => TextureFormat.ETC2_RGBA8, GraphicsFormat.RGBA_ETC2_UNorm => TextureFormat.ETC2_RGBA8, GraphicsFormat.R_EAC_UNorm => TextureFormat.EAC_R, GraphicsFormat.R_EAC_SNorm => TextureFormat.EAC_R, GraphicsFormat.RG_EAC_UNorm => TextureFormat.EAC_RG, GraphicsFormat.RG_EAC_SNorm => TextureFormat.EAC_RG, GraphicsFormat.RGBA_ASTC4X4_SRGB => TextureFormat.ASTC_4x4, GraphicsFormat.RGBA_ASTC4X4_UNorm => TextureFormat.ASTC_4x4, GraphicsFormat.RGBA_ASTC5X5_SRGB => TextureFormat.ASTC_5x5, GraphicsFormat.RGBA_ASTC5X5_UNorm => TextureFormat.ASTC_5x5, GraphicsFormat.RGBA_ASTC6X6_SRGB => TextureFormat.ASTC_6x6, GraphicsFormat.RGBA_ASTC6X6_UNorm => TextureFormat.ASTC_6x6, GraphicsFormat.RGBA_ASTC8X8_SRGB => TextureFormat.ASTC_8x8, GraphicsFormat.RGBA_ASTC8X8_UNorm => TextureFormat.ASTC_8x8, GraphicsFormat.RGBA_ASTC10X10_SRGB => TextureFormat.ASTC_10x10, GraphicsFormat.RGBA_ASTC10X10_UNorm => TextureFormat.ASTC_10x10, GraphicsFormat.RGBA_ASTC12X12_SRGB => TextureFormat.ASTC_12x12, GraphicsFormat.RGBA_ASTC12X12_UNorm => TextureFormat.ASTC_12x12, GraphicsFormat.YUV2 => throw new NotSupportedException(), GraphicsFormat.DepthAuto => throw new NotSupportedException(), GraphicsFormat.ShadowAuto => throw new NotSupportedException(), GraphicsFormat.VideoAuto => throw new NotSupportedException(), GraphicsFormat.RGBA_ASTC4X4_UFloat => TextureFormat.ASTC_4x4, GraphicsFormat.RGBA_ASTC5X5_UFloat => TextureFormat.ASTC_5x5, GraphicsFormat.RGBA_ASTC6X6_UFloat => TextureFormat.ASTC_6x6, GraphicsFormat.RGBA_ASTC8X8_UFloat => TextureFormat.ASTC_8x8, GraphicsFormat.RGBA_ASTC10X10_UFloat => TextureFormat.ASTC_10x10, GraphicsFormat.RGBA_ASTC12X12_UFloat => TextureFormat.ASTC_12x12, GraphicsFormat.D16_UNorm_S8_UInt => throw new NotSupportedException(), _ => throw new ArgumentOutOfRangeException(nameof(format), format, null), }; }