issue 2850: make it truly srgb (was wrong curve segment gamma before)

This commit is contained in:
torger 2015-07-24 21:29:51 +02:00
parent 8eeb203a27
commit 9c4e054484

View File

@ -340,7 +340,7 @@ void CurveFactory::curveBW (
LUTu & histogrambw, LUTu & outBeforeCCurveHistogrambw,//for Luminance LUTu & histogrambw, LUTu & outBeforeCCurveHistogrambw,//for Luminance
ToneCurve & customToneCurvebw1, ToneCurve & customToneCurvebw2, int skip) ToneCurve & customToneCurvebw1, ToneCurve & customToneCurvebw2, int skip)
{ {
const float gamma_ = Color::sRGBGamma; const float gamma_ = Color::sRGBGammaCurve;
const float start = expf(gamma_*logf( -0.055 / ((1.0/gamma_-1.0)*1.055 ))); const float start = expf(gamma_*logf( -0.055 / ((1.0/gamma_-1.0)*1.055 )));
const float slope = 1.055 * powf (start, 1.0/gamma_-1) - 0.055/start; const float slope = 1.055 * powf (start, 1.0/gamma_-1) - 0.055/start;
const float mul = 1.055; const float mul = 1.055;
@ -634,7 +634,7 @@ void CurveFactory::curveToningLL ( bool & llctoningutili,const std::vector<doubl
// the curve shapes are defined in sRGB gamma, but the output curves will operate on linear floating point data, // the curve shapes are defined in sRGB gamma, but the output curves will operate on linear floating point data,
// hence we do both forward and inverse gamma conversions here. // hence we do both forward and inverse gamma conversions here.
const float gamma_ = Color::sRGBGamma; const float gamma_ = Color::sRGBGammaCurve;
const float start = expf(gamma_*logf( -0.055 / ((1.0/gamma_-1.0)*1.055 ))); const float start = expf(gamma_*logf( -0.055 / ((1.0/gamma_-1.0)*1.055 )));
const float slope = 1.055 * powf (start, 1.0/gamma_-1) - 0.055/start; const float slope = 1.055 * powf (start, 1.0/gamma_-1) - 0.055/start;
const float mul = 1.055; const float mul = 1.055;