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

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

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

            default:
                throw new InternalException("Illegal companding function");
            }
        }
Esempio n. 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));
     }
 }
Esempio n. 3
0
        public void ApplySRGBCompanding_is_correct()
        {
            Assert.That(ColorCompandingUtils.ApplySRGBCompanding(0), Is.EqualTo(0).Within(Epsilon));
            Assert.That(ColorCompandingUtils.ApplySRGBCompanding(1), Is.EqualTo(1).Within(Epsilon));

            Assert.That(ColorCompandingUtils.ApplySRGBCompanding(0.001f), Is.EqualTo(0.01292f).Within(Epsilon));
            Assert.That(ColorCompandingUtils.ApplySRGBCompanding(0.6f), Is.EqualTo(0.797738f).Within(Epsilon));
        }