有两种在位图中存储 Alpha 的方法:预乘和非预乘。
要合成采用非预乘格式的图像,必须在将 alpha 添加到背景图像的颜色之前,将 alpha 与每个 R、G 和 B 通道相乘。这样可以实现正确的透明效果,但是每次合成时都必须这样做。在使用预乘 alpha 的情况下,将已经相乘的 alpha 与 R、G 和 B 组件共同存储,这样合成的效能就更高。
这并不是 3ds Max 以预乘格式存储图像的唯一原因。当渲染图像时,您通常希望对象的边缘不会出现锯齿。通过决定对象边缘像素的部分覆盖,然后调整像素的 alpha 就可以实现这一效果。例如,30% 被对象所覆盖的像素,其 alpha 就是 0.30。
为了对边缘进行锯齿处理,必须预乘 alpha 来使边缘像素变暗。(这等价于将图像与黑色图片合成)。因此在某种意义上,对渲染图像自然而然的会采用预乘 alpha 的方法。如果没有预乘要渲染的图像的 alpha,那么观察 RGB 就会发现对象的边缘存在锯齿。要显示图像时,需要使用 alpha 通道将图像与黑色合成。
如果禁用了“使用环境 Alpha”(默认设置),则背景的 Alpha 值将为 0(完全透明)。如果启用了“使用环境 Alpha”,结果图像的 Alpha 是场景和背景图像的 Alpha 的组合。此外,如果在禁用“预乘 Alpha”时渲染到 TGA 文件,则启用“使用环境 Alpha”可以避免出现不正确的结果。