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"); } }
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)); } }
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)); }