[Pixman] sRGB processing for pixman
Bill Spitzak
spitzak at gmail.com
Mon Jun 11 14:18:28 PDT 2012
Antti S. Lankila wrote:
> I do want to point out one advantage of using, say gamma=2.2 in lieu of
> the actual sRGB formulas in some situations: exponentiation permits
> separate treatment of alpha and color components. For instance
>
> (component * alpha)^2.2
>
> is just
>
> component^2.2 * alpha^2.2
>
> and this comes into play when library users read in, say, PNG, and see
> some alpha values and prepare that texture for pixman. In the past, they
> would have multiplied the components by alpha (I imagine), but now they
> must only raise the alpha to 2.2 first before the texture is ready for
> consumption by pixman. However, full sRGB formula requires:
>
> lin2srgb(srgb2lin(c) * a)
>
> which will be far more work to implement, and the results aren't going
> to be any different in practice.
Even if you use lookup tables and implement the linear portion of sRGB,
I think it is close enough to a gamma curve that you can pretend the
function is communative/additive. I would simplify composite
calculations by assuming
srgb2lin(a*b) == srgb2lin(a)*srgb2lin(b)
even though this is not true.
More information about the Pixman
mailing list