Yuichi Ito on premultiplied alpha

Yuichi Ito on premultiplied alpha

  • Comments 10

Software developers are most productive when working on things that offer rapid iteration, but that is not always possible. Waiting for slow code builds or test cycles limits how much code we can produce, but thanks to the power of multitasking, stalls in our high priority coding tasks tend to increase throughput in lower priority areas such as blog posts!

You can tell my colleague Ito has been experiencing a lot of stalls recently. Not only did he demolish my all time record of 18 posts in one month with a mammoth 21 this May, but he also found time to make a really cool video showing the difference between interpolative and premultiplied alpha blending.

  • Your CSS doesn't render as well on smartphones as the previous version.

    The actual text column gets 40 pixels in the middle...

  • Hah "slow code builds or test cycles", how about content builds... :-(

  • > Hah "slow code builds or test cycles", how about content builds... :-(

    Not a lot of content in the XNA Framework itself (other than for unit tests, which are mostly quite small), so that's not really an issue for us.

    The main factor that makes our builds take a long time is just how many different platforms we have to build for (there are many different flavors of our Xbox title player).

  • >> Hah "slow code builds or test cycles", how about content builds... :-(

    Not a lot of content in the XNA Framework itself (other than for unit tests, which are mostly quite small), so that's not really an issue for us.

    The main factor that makes our builds take a long time is just how many different platforms we have to build for (there are many different flavors of our Xbox title player).

    <<<

    Maybe someone should add a bunch of content to persuade the XNA team to improve content build times... :-) I wonder about parallel builds or some sort of distributed builds, Incredi Build? (not so useful for me as I only have one system, but would probably be useful in general).

    I am begining to consider trying to add some sort of nasty hack to display a dialog asking if anything requiring a content build has happened and then tweak assembly change times(for the editor mainly). Wouldnt be a complete cure, but every little helps...

  • I've never seen the term "interpolative alpha blending" used for the bog-standard SRCALPHA/INVSRCALPHA. I'd be interested to know how you came to use it?

  • > I've never seen the term "interpolative alpha blending" used for the bog-standard SRCALPHA/INVSRCALPHA. I'd be interested to know how you came to use it?

    It does seem a bit of an odd term, since both alpha values are interpolated...

  • The "interpolated" part is because the blend equation is lerp(srcColor, destColor, srcAlpha). The blend is literally just a single lerp operation.

    Perhaps a better question is, what else could we call this? For a while I called it "regular alpha blending", but that carries an implication that "regular" is common/easy/sensible/default, while "premultiplied" is somehow more complex and scary, which is the exact opposite of what I want to convey!

  • The "interpolated" part is because the blend equation is lerp(srcColor, destColor, srcAlpha). The blend is literally just a single lerp operation.

    Perhaps a better question is, what else could we call this? For a while I called it "regular alpha blending", but that carries an implication that "regular" is common/easy/sensible/default, while "premultiplied" is somehow more complex and scary, which is the exact opposite of what I want to convey!

  • could call it "traditional" alpha blending maybe, since its the old, faulty way of doing it compared to the new hotness of premultiplied

  • > could call it "traditional" alpha blending maybe

    That's better, but it is still a relative term that could be interpreted differently depending on your frame of reference. Realtime computer graphics (especially the hardware accelerated variety) has most often used this style of alpha blending, but if your background is in image codecs, or offline rendering (eg. renderman), or composition based engines such as Flash or Silverlight, you would think of premultiplied as the most common, traditionally used format.

    I think it is better to name things based on what they are (is the blend operation a lerp or not?) versus how they have been used in the past.

Page 1 of 1 (10 items)
Leave a Comment
  • Please add 1 and 7 and type the answer here:
  • Post