using System.Numerics;
using XFEEDToolBox.Core.Rendering;
using XFEExtension.NetCore.XUnit.Attributes;
namespace XFEEDToolBox.Test;
[TestFixture]
public sealed class GalaxyOriginalHdrTests
{
[Test] public void FinalPassUsesOverwrittenOriginalHableParametersAndActualGamma()
{
Check.Equal(0x3efb645a,BitConverter.SingleToInt32Bits(GalaxyOriginalHdr.ShoulderStrength));
Check.Equal(0x3f34fdf4,BitConverter.SingleToInt32Bits(GalaxyOriginalHdr.LinearStrength));
Check.Equal(0x40a7be77,BitConverter.SingleToInt32Bits(GalaxyOriginalHdr.LinearWhite));
var constants=GalaxyOriginalHdr.Constants(640,360);
Check.Equal(256f,constants[2].X);Check.Equal(640f,constants[2].Z);
Check.Equal(GalaxyOriginalHdr.Curve(GalaxyOriginalHdr.LinearWhite),constants[4].Z);
Check.Equal(1/2.2f,constants[9].Z);Check.Equal(new Vector4(1,1,1,2.2f),constants[10]);
Check.Equal(5,GalaxyOriginalHdr.ToneMapPass);Check.That(!GalaxyOriginalHdr.FullRestored);
}
[Test] public void OriginalCoreScalingCancelsOnlyThroughItsBlendAndFinalRead()
{
var sourceMultiplier=MathF.Sqrt(GalaxyOriginalHdr.ReadScale)*GalaxyOriginalHdr.WriteScale;
var stored=sourceMultiplier*sourceMultiplier;
Check.Equal(1f,stored*GalaxyOriginalHdr.ReadScale);
var black=GalaxyOriginalHdr.ToneMap(Vector3.Zero);Check.Equal(Vector3.Zero,black);
var neutral=GalaxyOriginalHdr.ToneMap(new Vector3(stored));
Check.That(Math.Abs(neutral.X-.4880821f)<.0001f);
Check.Equal(neutral.X,neutral.Y);Check.Equal(neutral.Y,neutral.Z);
var white=GalaxyOriginalHdr.ToneMap(new Vector3(GalaxyOriginalHdr.LinearWhite*GalaxyOriginalHdr.WriteScale));
Check.That(Math.Abs(white.X-1)<.00001f);
}
}
using System.Numerics;
using XFEEDToolBox.Core.Rendering;
using XFEExtension.NetCore.XUnit.Attributes;
namespace XFEEDToolBox.Test;
[TestFixture]
public sealed class GalaxyOriginalHdrTests
{
[Test] public void FinalPassUsesOverwrittenOriginalHableParametersAndActualGamma()
{
Check.Equal(0x3efb645a,BitConverter.SingleToInt32Bits(GalaxyOriginalHdr.ShoulderStrength));
Check.Equal(0x3f34fdf4,BitConverter.SingleToInt32Bits(GalaxyOriginalHdr.LinearStrength));
Check.Equal(0x40a7be77,BitConverter.SingleToInt32Bits(GalaxyOriginalHdr.LinearWhite));
var constants=GalaxyOriginalHdr.Constants(640,360);
Check.Equal(256f,constants[2].X);Check.Equal(640f,constants[2].Z);
Check.Equal(GalaxyOriginalHdr.Curve(GalaxyOriginalHdr.LinearWhite),constants[4].Z);
Check.Equal(1/2.2f,constants[9].Z);Check.Equal(new Vector4(1,1,1,2.2f),constants[10]);
Check.Equal(5,GalaxyOriginalHdr.ToneMapPass);Check.That(!GalaxyOriginalHdr.FullRestored);
}
[Test] public void OriginalCoreScalingCancelsOnlyThroughItsBlendAndFinalRead()
{
var sourceMultiplier=MathF.Sqrt(GalaxyOriginalHdr.ReadScale)*GalaxyOriginalHdr.WriteScale;
var stored=sourceMultiplier*sourceMultiplier;
Check.Equal(1f,stored*GalaxyOriginalHdr.ReadScale);
var black=GalaxyOriginalHdr.ToneMap(Vector3.Zero);Check.Equal(Vector3.Zero,black);
var neutral=GalaxyOriginalHdr.ToneMap(new Vector3(stored));
Check.That(Math.Abs(neutral.X-.4880821f)<.0001f);
Check.Equal(neutral.X,neutral.Y);Check.Equal(neutral.Y,neutral.Z);
var white=GalaxyOriginalHdr.ToneMap(new Vector3(GalaxyOriginalHdr.LinearWhite*GalaxyOriginalHdr.WriteScale));
Check.That(Math.Abs(white.X-1)<.00001f);
}
}