MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / stbDecompress

Function stbDecompress

Source/Engine/Tools/TextureTool/TextureTool.stb.cpp:80–199  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

78
79#if USE_EDITOR
80static TextureData const* stbDecompress(const TextureData& textureData, TextureData& decompressed)
81{
82 if (!PixelFormatExtensions::IsCompressed(textureData.Format))
83 return &textureData;
84 const bool srgb = PixelFormatExtensions::IsSRGB(textureData.Format);
85 switch (textureData.Format)
86 {
87 case PixelFormat::BC4_UNorm:
88 case PixelFormat::BC4_SNorm:
89 decompressed.Format = PixelFormat::R8_UNorm;
90 break;
91 case PixelFormat::BC5_UNorm:
92 case PixelFormat::BC5_SNorm:
93 decompressed.Format = PixelFormat::R8G8_UNorm;
94 break;
95 default:
96 decompressed.Format = srgb ? PixelFormat::R8G8B8A8_UNorm_sRGB : PixelFormat::R8G8B8A8_UNorm;
97 break;
98 }
99 decompressed.Width = textureData.Width;
100 decompressed.Height = textureData.Height;
101 decompressed.Depth = textureData.Depth;
102 decompressed.Items.Resize(textureData.Items.Count());
103
104 typedef bool (*detexDecompressBlockFuncType)(const uint8_t* bitstring, uint32_t mode_mask, uint32_t flags, uint8_t* pixel_buffer);
105 detexDecompressBlockFuncType detexDecompressBlockFunc;
106 int32 pixelSize, blockSize;
107 switch (textureData.Format)
108 {
109 case PixelFormat::BC1_UNorm:
110 case PixelFormat::BC1_UNorm_sRGB:
111 detexDecompressBlockFunc = detexDecompressBlockBC1;
112 pixelSize = 4;
113 blockSize = 8;
114 break;
115 case PixelFormat::BC2_UNorm:
116 case PixelFormat::BC2_UNorm_sRGB:
117 detexDecompressBlockFunc = detexDecompressBlockBC2;
118 pixelSize = 4;
119 blockSize = 16;
120 break;
121 case PixelFormat::BC3_UNorm:
122 case PixelFormat::BC3_UNorm_sRGB:
123 detexDecompressBlockFunc = detexDecompressBlockBC3;
124 pixelSize = 4;
125 blockSize = 16;
126 break;
127 case PixelFormat::BC4_UNorm:
128 detexDecompressBlockFunc = detexDecompressBlockRGTC1;
129 pixelSize = 1;
130 blockSize = 8;
131 break;
132 case PixelFormat::BC5_UNorm:
133 detexDecompressBlockFunc = detexDecompressBlockRGTC2;
134 pixelSize = 2;
135 blockSize = 16;
136 break;
137 case PixelFormat::BC7_UNorm:

Callers 3

ExportTextureStbMethod · 0.85
ImportTextureStbMethod · 0.85
ConvertStbMethod · 0.85

Calls 8

IsSRGBFunction · 0.85
memsetFunction · 0.85
memcpyFunction · 0.85
MaxFunction · 0.50
ResizeMethod · 0.45
CountMethod · 0.45
AllocateMethod · 0.45
GetMethod · 0.45

Tested by

no test coverage detected