public void CompandedRgbToLinearRgb(
            float compandedR, float compandedG, float compandedB,
            out float linearR, out float linearG, out float linearB)
        {
            switch (_compandingFunction)
            {
            case ColorCompandingFunction.Gamma:
                linearR = ColorCompandingUtils.ApplyInverseGammaCompanding(compandedR, _gamma);
                linearG = ColorCompandingUtils.ApplyInverseGammaCompanding(compandedG, _gamma);
                linearB = ColorCompandingUtils.ApplyInverseGammaCompanding(compandedB, _gamma);
                break;

            case ColorCompandingFunction.SRGB:
                linearR = ColorCompandingUtils.ApplyInverseSRGBCompanding(compandedR);
                linearG = ColorCompandingUtils.ApplyInverseSRGBCompanding(compandedG);
                linearB = ColorCompandingUtils.ApplyInverseSRGBCompanding(compandedB);
                break;

            case ColorCompandingFunction.LStar:
                linearR = ColorCompandingUtils.ApplyInverseLStarCompanding(compandedR);
                linearG = ColorCompandingUtils.ApplyInverseLStarCompanding(compandedG);
                linearB = ColorCompandingUtils.ApplyInverseLStarCompanding(compandedB);
                break;

            default:
                throw new InternalException("Illegal companding function");
            }
        }
示例#2
0
 public void ApplyInverseLStarCompanding_is_inverse_of_ApplyLStarCompanding()
 {
     for (float x = 0; x <= 1; x += Step)
     {
         var a = ColorCompandingUtils.ApplyLStarCompanding(x);
         Assert.That(ColorCompandingUtils.ApplyInverseLStarCompanding(a), Is.EqualTo(x).Within(Epsilon));
     }
 }
示例#3
0
        public void ApplyInverseLStarCompanding_is_correct()
        {
            Assert.That(ColorCompandingUtils.ApplyInverseLStarCompanding(0), Is.EqualTo(0).Within(Epsilon));
            Assert.That(ColorCompandingUtils.ApplyInverseLStarCompanding(1), Is.EqualTo(1).Within(Epsilon));

            Assert.That(ColorCompandingUtils.ApplyInverseLStarCompanding(0.01f), Is.EqualTo(0.001107f).Within(Epsilon));
            Assert.That(ColorCompandingUtils.ApplyInverseLStarCompanding(0.6f), Is.EqualTo(0.2812333f).Within(Epsilon));
        }