From 78680987bf77b837d9199528391b525693e58a96 Mon Sep 17 00:00:00 2001 From: VaDiM Date: Mon, 20 Apr 2026 03:33:03 +0300 Subject: [PATCH] A bit faster decoding of RGBA64 images --- AssetStudioUtility/Texture2DConverter.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/AssetStudioUtility/Texture2DConverter.cs b/AssetStudioUtility/Texture2DConverter.cs index 96a1555..ed7ed87 100644 --- a/AssetStudioUtility/Texture2DConverter.cs +++ b/AssetStudioUtility/Texture2DConverter.cs @@ -802,10 +802,11 @@ namespace AssetStudio { for (var i = 0; i < outputDataSize; i += 4) { - destSpan[i] = DownScaleFrom16BitTo8Bit(BinaryPrimitives.ReadUInt16LittleEndian(buff.Slice(i * 2 + 4))); //B - destSpan[i + 1] = DownScaleFrom16BitTo8Bit(BinaryPrimitives.ReadUInt16LittleEndian(buff.Slice(i * 2 + 2))); //G - destSpan[i + 2] = DownScaleFrom16BitTo8Bit(BinaryPrimitives.ReadUInt16LittleEndian(buff.Slice(i * 2))); //R - destSpan[i + 3] = DownScaleFrom16BitTo8Bit(BinaryPrimitives.ReadUInt16LittleEndian(buff.Slice(i * 2 + 6))); //A + var val = BinaryPrimitives.ReadUInt64LittleEndian(buff.Slice(i * 2)); + destSpan[i] = DownScaleFrom16BitTo8Bit((ushort)((val >> 32) & 0xffff)); //B + destSpan[i + 1] = DownScaleFrom16BitTo8Bit((ushort)((val >> 16) & 0xffff)); //G + destSpan[i + 2] = DownScaleFrom16BitTo8Bit((ushort)(val & 0xffff)); //R + destSpan[i + 3] = DownScaleFrom16BitTo8Bit((ushort)((val >> 48) & 0xffff)); //A } return true; }