Skip to content

Commit 125b20d

Browse files
Graphics Accessories: added BCFormatToUncompressed function
1 parent b280766 commit 125b20d

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

Graphics/GraphicsAccessories/interface/GraphicsAccessories.hpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -767,10 +767,22 @@ String GetShaderResourcePrintName(const DescType& ResDesc, Uint32 ArrayIndex = 0
767767
return GetShaderResourcePrintName(ResDesc.Name, ResDesc.ArraySize, ArrayIndex);
768768
}
769769

770+
/// Converts UNORM format to a corresponding SRGB format, for example:
771+
/// RGBA8_UNORM -> RGBA8_UNORM_SRGB
772+
/// BC3_UNORM -> BC3_UNORM_SRGB
770773
TEXTURE_FORMAT UnormFormatToSRGB(TEXTURE_FORMAT Fmt);
771774

775+
/// Converts SRGB format to a corresponding UNORM format, for example:
776+
/// RGBA8_UNORM_SRGB -> RGBA8_UNORM
777+
/// BC3_UNORM_SRGB -> BC3_UNORM
772778
TEXTURE_FORMAT SRGBFormatToUnorm(TEXTURE_FORMAT Fmt);
773779

780+
/// Converts block-compressed format to a corresponding uncompressed format, for example:
781+
/// BC1_UNORM -> RGBA8_UNORM
782+
/// BC4_UNORM -> R8_UNORM
783+
TEXTURE_FORMAT BCFormatToUncompressed(TEXTURE_FORMAT Fmt);
784+
785+
774786
bool IsSRGBFormat(TEXTURE_FORMAT Fmt);
775787

776788
String GetPipelineShadingRateFlagsString(PIPELINE_SHADING_RATE_FLAGS Flags);

Graphics/GraphicsAccessories/src/GraphicsAccessories.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2603,6 +2603,55 @@ TEXTURE_FORMAT SRGBFormatToUnorm(TEXTURE_FORMAT Fmt)
26032603
}
26042604
}
26052605

2606+
TEXTURE_FORMAT BCFormatToUncompressed(TEXTURE_FORMAT Fmt)
2607+
{
2608+
switch (Fmt)
2609+
{
2610+
// RGB 5:6:5 + 1 bit alpha
2611+
case TEX_FORMAT_BC1_TYPELESS:
2612+
return TEX_FORMAT_RGBA8_TYPELESS;
2613+
case TEX_FORMAT_BC1_UNORM:
2614+
return TEX_FORMAT_RGBA8_UNORM;
2615+
case TEX_FORMAT_BC1_UNORM_SRGB:
2616+
return TEX_FORMAT_RGBA8_UNORM_SRGB;
2617+
2618+
// RGB 5:6:5 + 4 bit alpha
2619+
case TEX_FORMAT_BC2_TYPELESS:
2620+
return TEX_FORMAT_RGBA8_TYPELESS;
2621+
case TEX_FORMAT_BC2_UNORM:
2622+
return TEX_FORMAT_RGBA8_UNORM;
2623+
case TEX_FORMAT_BC2_UNORM_SRGB:
2624+
return TEX_FORMAT_RGBA8_UNORM_SRGB;
2625+
2626+
// RGB 5:6:5 + 8 bit alpha
2627+
case TEX_FORMAT_BC3_TYPELESS:
2628+
return TEX_FORMAT_RGBA8_TYPELESS;
2629+
case TEX_FORMAT_BC3_UNORM:
2630+
return TEX_FORMAT_RGBA8_UNORM;
2631+
case TEX_FORMAT_BC3_UNORM_SRGB:
2632+
return TEX_FORMAT_RGBA8_UNORM_SRGB;
2633+
2634+
// R8
2635+
case TEX_FORMAT_BC4_TYPELESS:
2636+
return TEX_FORMAT_R8_TYPELESS;
2637+
case TEX_FORMAT_BC4_UNORM:
2638+
return TEX_FORMAT_R8_UNORM;
2639+
case TEX_FORMAT_BC4_SNORM:
2640+
return TEX_FORMAT_R8_SNORM;
2641+
2642+
// RG 8:8
2643+
case TEX_FORMAT_BC5_TYPELESS:
2644+
return TEX_FORMAT_RG8_TYPELESS;
2645+
case TEX_FORMAT_BC5_UNORM:
2646+
return TEX_FORMAT_RG8_UNORM;
2647+
case TEX_FORMAT_BC5_SNORM:
2648+
return TEX_FORMAT_RG8_SNORM;
2649+
2650+
default:
2651+
return TEX_FORMAT_UNKNOWN;
2652+
}
2653+
}
2654+
26062655
bool IsSRGBFormat(TEXTURE_FORMAT Fmt)
26072656
{
26082657
return (Fmt == TEX_FORMAT_RGBA8_UNORM_SRGB ||

0 commit comments

Comments
 (0)