using BCnEncoder.Decoder;
using BCnEncoder.Shared;
using XFEEDToolBox.Core.Rendering;
using XFEExtension.NetCore.XUnit.Attributes;
namespace XFEEDToolBox.Test;
[TestFixture]
public sealed class GalaxyOriginalTerritoryGlowTests
{
[Test] public void OriginalBc4TextureHasAContinuousGlowAndAllTenPaddedMipLevels()
{
var source=GalaxyOriginalTerritoryGlow.Reference;var mip=source.Mips[0];
var pixels=new BcDecoder().DecodeRaw(source.Payload.Slice(mip.Offset,mip.SliceBytes).ToArray(),512,512,CompressionFormat.Bc4);
var centre=pixels[256*512+256].r;var middle=pixels[256*512+320].r;var outer=pixels[256*512+440].r;
Check.That(centre>middle&&middle>outer&&outer>=pixels[0].r,"Original single-channel texture must decode as a centred continuous glow.");
Check.Equal(10,source.Mips.Count);Check.Equal(181248,source.Payload.Length);
foreach(var level in Enumerable.Range(0,10))
{
var m=source.Mips[level];var size=Math.Max(1,512>>level);var blocks=(size+3)/4;
var packed=new byte[blocks*blocks*8];
for(var row=0;row<blocks;row++)source.Payload.Span.Slice(m.Offset+row*m.RowPitch,blocks*8).CopyTo(packed.AsSpan(row*blocks*8));
Check.Equal(size*size,new BcDecoder().DecodeRaw(packed,size,size,CompressionFormat.Bc4).Length);
}
}
}
using BCnEncoder.Decoder;
using BCnEncoder.Shared;
using XFEEDToolBox.Core.Rendering;
using XFEExtension.NetCore.XUnit.Attributes;
namespace XFEEDToolBox.Test;
[TestFixture]
public sealed class GalaxyOriginalTerritoryGlowTests
{
[Test] public void OriginalBc4TextureHasAContinuousGlowAndAllTenPaddedMipLevels()
{
var source=GalaxyOriginalTerritoryGlow.Reference;var mip=source.Mips[0];
var pixels=new BcDecoder().DecodeRaw(source.Payload.Slice(mip.Offset,mip.SliceBytes).ToArray(),512,512,CompressionFormat.Bc4);
var centre=pixels[256*512+256].r;var middle=pixels[256*512+320].r;var outer=pixels[256*512+440].r;
Check.That(centre>middle&&middle>outer&&outer>=pixels[0].r,"Original single-channel texture must decode as a centred continuous glow.");
Check.Equal(10,source.Mips.Count);Check.Equal(181248,source.Payload.Length);
foreach(var level in Enumerable.Range(0,10))
{
var m=source.Mips[level];var size=Math.Max(1,512>>level);var blocks=(size+3)/4;
var packed=new byte[blocks*blocks*8];
for(var row=0;row<blocks;row++)source.Payload.Span.Slice(m.Offset+row*m.RowPitch,blocks*8).CopyTo(packed.AsSpan(row*blocks*8));
Check.Equal(size*size,new BcDecoder().DecodeRaw(packed,size,size,CompressionFormat.Bc4).Length);
}
}
}