Loading... (0%)

Quick-tip: Straight Alpha VS Premultiplied Alpha

27 February 2011

Have you ever tried figuring out the difference between Straight Alpha and Premultiplied alpha and when to use what?

Some people swear premultiplied alpha is the way to go, some say straight alpha. To be frank, as long as the math and interpretation of the channels is done correctly, both are equal.

But lets start with an explanation of what premultiplied and straight alpha is:

Premultiplied Alpha

In premultiplied alpha, partly transparent areas of your image (as in anti-aliased edges) will be premultiplied with a matting color. In 9 out of 10 cases, this color will be black, though it is possible to specify the color yourself.

This means, although you have an alpha channel (RGB[A]) for your image, the RGB channels will be matted (premultiplied) with the specified color.

If the math is done correctly and the alpha interpretation settings in your software (eg. After Effects) are correct, the amount of matted color will be substracted from your image by using the alpha channel.

Images with premultiplied alpha can look correct, even when the alpha-channel is ignored (or not supported by early-day applications)

Pixel-explanation:

  • A red pixel that has an alpha of 50% will have the following 8bit  RGBA information: R[127], G[0], B[0], A[127]
  • An orange pixel that has an alpha of 75% will have the following 8bit RGBA information: R[191], G[95], B[0], A[191]

 

Premultiplied Alpha

Straight Alpha

In straight alpha, the RGB channels are left untouched and aren’t matted or premultiplied with a specified color.

When ignoring the images alpha-channel the image will not look correct and have rough edges and dots all over the place. This can be surprising for people who do not know what straight alpha is.

Pixel-explanation:

  • A red pixel that has an alpha of 50% will have the following 8bit RGBA information: R[255], G[0], B[0], A[127]
  • An orange pixel that has an alpha of 75% will have the following 8bit RGBA information: R[255], G[127], B[0], A[191]

 

Straight Alpha

 

Conclusion

Both techniques are equal, as long as you and your software interpret them correctly.

I recommend watching the following Video for more information:

 

What is your take on Premultiplied and Straight Alpha? Share your thoughts in the Comments!

Alex - post author

Hi, I am Alex, a passionate Director and 3D Generalist currently working in an Animation Studio.

Leave a Reply

Notify of
avatar
Sort by:   newest | oldest | most voted
Naunan Khalid
Guest

Orange RGB = 255,165,0,1

In pre-multiplied alpha
An orange with 75% of alpha will have the rgb of

R[255*0.75],G[165*0.75],B[0*0.75],A[255 * 0.75]

R[191],G[124],B[0],A[191]

can you confirm please?

Www.Salope-Asiatique.Info
Guest

Ce рost est vraiment plein dе vérité

ของชำร่วย
Guest

Aw, this was a very good post. Spending some time and
actual effort to create a great article… but what can I say… I put things off a whole lot and never seem
to get nearly anything done.

irobot roomba 780 review alor setar
Guest

Attractive section of content. I just stumbled upon your website and in accession capital tto assert
that I acquire actrually enjoyed account your blog posts.
Anyway I will be subscribing to your feeds and even I achievement you access consistently fast.

vieille nympho
Guest

Une fois de ƿlus un superbe аrticle : je pense enn discuter ɗans la semaine avec certains de mes
vօіsins

Home & Garden
Guest

Spot on with this write-up, I honestly think this site needs
a lot more attention. I’ll probably be returning to
read more, thanks for the advice!

Yakov
Guest

“Both techniques are equal, as long as you and your software interpret them correctly.” It’s nice diplomatic saying, but it’s not true.

First the correct math is expressed in premultiplied-alpha color space, so to “interpret correctly” straight alpha textures the software has to multiply and divide before and after the all the computations. (Example: downscale a half-transparent image.)

Second, premultiplied-alpha allows encoding additive blended regions in the texture, which cannot be done with straight alpha.

wpDiscuz