XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
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);
    }
}