Skip to content

Commit b957e0e

Browse files
Graphics Accessories: added TypelessFormatToUnorm function
1 parent 0b04ff7 commit b957e0e

File tree

2 files changed

+53
-2
lines changed

2 files changed

+53
-2
lines changed

Graphics/GraphicsAccessories/interface/GraphicsAccessories.hpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2019-2024 Diligent Graphics LLC
2+
* Copyright 2019-2025 Diligent Graphics LLC
33
* Copyright 2015-2019 Egor Yusov
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -788,6 +788,12 @@ TEXTURE_FORMAT SRGBFormatToUnorm(TEXTURE_FORMAT Fmt);
788788
/// BC4_UNORM -> R8_UNORM
789789
TEXTURE_FORMAT BCFormatToUncompressed(TEXTURE_FORMAT Fmt);
790790

791+
/// Converts typeless format to a corresponding UNORM format, for example:
792+
/// RGBA8_TYPELESS -> RGBA8_UNORM
793+
/// BC1_TYPELESS -> BC1_UNORM
794+
/// If the format is not typeless, it is returned as is.
795+
TEXTURE_FORMAT TypelessFormatToUnorm(TEXTURE_FORMAT Fmt);
796+
791797

792798
bool IsSRGBFormat(TEXTURE_FORMAT Fmt);
793799

Graphics/GraphicsAccessories/src/GraphicsAccessories.cpp

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ const TextureFormatAttribs& GetTextureFormatAttribs(TEXTURE_FORMAT Format)
416416
INIT_TEX_FORMAT_INFO(TEX_FORMAT_ETC2_RGBA8_UNORM_SRGB, 16, 4, COMPONENT_TYPE_COMPRESSED, false, 4,4);
417417
#undef INIT_TEX_FORMAT_INFO
418418
// clang-format on
419-
static_assert(TEX_FORMAT_NUM_FORMATS == TEX_FORMAT_ETC2_RGBA8_UNORM_SRGB + 1, "Not all texture formats initialized.");
419+
static_assert(TEX_FORMAT_NUM_FORMATS == 106, "Not all texture formats initialized.");
420420

421421
#ifdef DILIGENT_DEBUG
422422
for (Uint32 Fmt = TEX_FORMAT_UNKNOWN; Fmt < TEX_FORMAT_NUM_FORMATS; ++Fmt)
@@ -2560,6 +2560,7 @@ const Char* GetPipelineStateStatusString(PIPELINE_STATE_STATUS PipelineStatus, b
25602560

25612561
TEXTURE_FORMAT UnormFormatToSRGB(TEXTURE_FORMAT Fmt)
25622562
{
2563+
static_assert(TEX_FORMAT_NUM_FORMATS == 106, "Please update the switch below to handle the new texture format, if needed");
25632564
switch (Fmt)
25642565
{
25652566
case TEX_FORMAT_RGBA8_UNORM:
@@ -2599,6 +2600,7 @@ TEXTURE_FORMAT UnormFormatToSRGB(TEXTURE_FORMAT Fmt)
25992600

26002601
TEXTURE_FORMAT SRGBFormatToUnorm(TEXTURE_FORMAT Fmt)
26012602
{
2603+
static_assert(TEX_FORMAT_NUM_FORMATS == 106, "Please update the switch below to handle the new texture format, if needed");
26022604
switch (Fmt)
26032605
{
26042606
case TEX_FORMAT_RGBA8_UNORM_SRGB:
@@ -2685,6 +2687,49 @@ TEXTURE_FORMAT BCFormatToUncompressed(TEXTURE_FORMAT Fmt)
26852687
}
26862688
}
26872689

2690+
TEXTURE_FORMAT TypelessFormatToUnorm(TEXTURE_FORMAT Fmt)
2691+
{
2692+
static_assert(TEX_FORMAT_NUM_FORMATS == 106, "Please update the switch below to handle the new texture format, if needed");
2693+
switch (Fmt)
2694+
{
2695+
case TEX_FORMAT_R8_TYPELESS:
2696+
return TEX_FORMAT_R8_UNORM;
2697+
2698+
case TEX_FORMAT_RG8_TYPELESS:
2699+
return TEX_FORMAT_RG8_UNORM;
2700+
2701+
case TEX_FORMAT_RGBA8_TYPELESS:
2702+
return TEX_FORMAT_RGBA8_UNORM;
2703+
2704+
case TEX_FORMAT_R16_TYPELESS:
2705+
return TEX_FORMAT_R16_UNORM;
2706+
2707+
case TEX_FORMAT_RG16_TYPELESS:
2708+
return TEX_FORMAT_RG16_UNORM;
2709+
2710+
case TEX_FORMAT_RGBA16_TYPELESS:
2711+
return TEX_FORMAT_RGBA16_UNORM;
2712+
2713+
case TEX_FORMAT_BC1_TYPELESS:
2714+
return TEX_FORMAT_BC1_UNORM;
2715+
2716+
case TEX_FORMAT_BC2_TYPELESS:
2717+
return TEX_FORMAT_BC2_UNORM;
2718+
2719+
case TEX_FORMAT_BC3_TYPELESS:
2720+
return TEX_FORMAT_BC3_UNORM;
2721+
2722+
case TEX_FORMAT_BC4_TYPELESS:
2723+
return TEX_FORMAT_BC4_UNORM;
2724+
2725+
case TEX_FORMAT_BC5_TYPELESS:
2726+
return TEX_FORMAT_BC5_UNORM;
2727+
2728+
default:
2729+
return Fmt;
2730+
}
2731+
}
2732+
26882733
bool IsSRGBFormat(TEXTURE_FORMAT Fmt)
26892734
{
26902735
return (Fmt == TEX_FORMAT_RGBA8_UNORM_SRGB ||

0 commit comments

Comments
 (0)