Support decoding textures with signed integer pixels

* Resolves #1858
This commit is contained in:
ds5678 2025-07-23 13:43:34 -07:00
parent 3bab19b4c2
commit 8d080dd42a

View File

@ -546,6 +546,38 @@ public static class TextureConverter
RgbConverter.Convert<ColorRGB9e5, double, TColor, TChannelValue>(inputSpan, width, height, outputSpan);
return true;
case TextureFormat.R8_SIGNED:
RgbConverter.Convert<ColorR<sbyte>, sbyte, TColor, TChannelValue>(inputSpan, width, height, outputSpan);
return true;
case TextureFormat.RG16_SIGNED:
RgbConverter.Convert<ColorRG<sbyte>, sbyte, TColor, TChannelValue>(inputSpan, width, height, outputSpan);
return true;
case TextureFormat.RGB24_SIGNED:
RgbConverter.Convert<ColorRGB<sbyte>, sbyte, TColor, TChannelValue>(inputSpan, width, height, outputSpan);
return true;
case TextureFormat.RGBA32_SIGNED:
RgbConverter.Convert<ColorRGBA<sbyte>, sbyte, TColor, TChannelValue>(inputSpan, width, height, outputSpan);
return true;
case TextureFormat.R16_SIGNED:
RgbConverter.Convert<ColorR<short>, short, TColor, TChannelValue>(inputSpan, width, height, outputSpan);
return true;
case TextureFormat.RG32_SIGNED:
RgbConverter.Convert<ColorRG<short>, short, TColor, TChannelValue>(inputSpan, width, height, outputSpan);
return true;
case TextureFormat.RGB48_SIGNED:
RgbConverter.Convert<ColorRGB<short>, short, TColor, TChannelValue>(inputSpan, width, height, outputSpan);
return true;
case TextureFormat.RGBA64_SIGNED:
RgbConverter.Convert<ColorRGBA<short>, short, TColor, TChannelValue>(inputSpan, width, height, outputSpan);
return true;
default:
Logger.Log(LogType.Error, LogCategory.Export, $"Unsupported texture format '{textureFormat}'");
return false;