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 ApplyInverseGammaCompanding_is_inverse_of_ApplySRGBCompanding()
 {
     for (float x = 0; x <= 1; x += Step)
     {
         var a = ColorCompandingUtils.ApplySRGBCompanding(x);
         Assert.That(ColorCompandingUtils.ApplyInverseSRGBCompanding(a), Is.EqualTo(x).Within(Epsilon));
     }
 }
예제 #3
0
        public void ApplyInverseSRGBCompanding_is_correct()
        {
            Assert.That(ColorCompandingUtils.ApplyInverseSRGBCompanding(0), Is.EqualTo(0).Within(Epsilon));
            Assert.That(ColorCompandingUtils.ApplyInverseSRGBCompanding(1), Is.EqualTo(1).Within(Epsilon));

            Assert.That(ColorCompandingUtils.ApplyInverseSRGBCompanding(0.01f), Is.EqualTo(0.00077f).Within(Epsilon));
            Assert.That(ColorCompandingUtils.ApplyInverseSRGBCompanding(0.6f), Is.EqualTo(0.318547f).Within(Epsilon));
        }