阿尔法混合
Alpha混合是一个将图像与背景相结合的过程,以创建一个局部或完全透明的外观。
混合公式#
通过alpha混合得到结果颜色,使用下面的公式:
ColorSrc对应多边形颜色(源图像),ColorDest对应屏幕缓冲颜色(目标图像)。ColorRes是结果颜色。
如果一个颜色的Alpha组件等于0,它将是透明的。使用1的Alpha值,添加Red、Green和Blue值来创建颜色。为了计算半透明区域的颜色,使用了线性插值。
和Alpha组件一样,RGB值也被规范化。
Src和Dest乘数的值#
乘法器Src和Dest可以有以下值:
Name | Description |
---|---|
None | 不使用混合 |
Zero | 对应颜色的RGBA分量乘以0 |
One | 对应颜色的RGBA分量乘以1 |
Src color | 对应颜色的RGBA分量乘以这些因子(每个分量):(mR, mG, mB, mA) |
One minus src color | 每种材质颜色的组分乘以这些因子(每个组分):(1 - mR, 1 - mG, 1 - mB, 1 - mA) |
Src alpha | 对应颜色的RGBA分量乘以mA |
One minus src alpha | RGBA组件1 - mA乘以相应的颜色 |
Dest color | 对应颜色的RGBA分量乘以这些因子(每个分量):(bR, bG, bB, bA) |
One minus dest color | 对应颜色的RGBA分量乘以这些因子(每个分量):(1 - bR, 1 - bG, 1 - bB, 1 - bA) |
Dest alpha | RGBA组件bA乘以相应的颜色 |
One minus dest alpha | 对应颜色的RGBA分量乘以1 - bA |
其中mR, mG, mB, mA分别为标准化材质红色、绿色、蓝色和alpha值;
bR, bG, bB, bA的背景归一化红色,绿色,蓝色,alpha值相应。
可能的组合#
根据乘数Src和Dest的组合,可以实现以下效果:
1#
Src = None
Dest = None
意味着没有阿尔法混合的材质。对象呈现完全不透明。
2#
Src = One
Dest = One minus Src alpha
结果:Alpha 混合
- 不透明区域(alpha = 1)接收材质颜色。
- 透明区域(alpha = 0)接收屏幕缓冲颜色。
结合用于创建透明基于α组件的影响。
3#
Src = Src alpha
Dest = One minus Src alpha
结果:标准α混合
- 不透明 区域接收材质颜色,但与 以前的 变体相比,它们更暗且尺寸更小。
- 领域的α梯度衰落是黑暗的。
- 透明区域接收屏幕缓冲颜色。
4#
Src = Src color
Dest = One minus Src alpha
结果:
5#
Src = Src color
Dest = One minus Src color
结果:
- 不透明区域很小并且颜色反转。
- 领域的α梯度衰落是黑暗的。
- 透明区域接收屏幕缓冲颜色。
- 完全黑色分散材质将导致呈现在屏幕缓冲区的颜色。
6#
Src = Src alpha
Dest = One
结果:Alpha-dependent颜色之外
- 在重叠的不透明区域中,材质颜色被添加到自身。 这些区域的面积非常小。
- 透明区域接收屏幕缓冲颜色。
- 完全黑色分散材质将导致呈现在屏幕缓冲区的颜色。
7#
8#
Src = One
Dest = One
结果:颜色之外
- 在重叠的不透明区域中,材质颜色被添加到自身。
- α梯度衰落的地区是明亮的和独特的。
- 透明区域接收屏幕缓冲颜色。
- 完全黑色分散材质将导致呈现在屏幕缓冲区的颜色。
这种组合可用于创建晕光,粒子系统,和体积灯。在这种混合模式,深色的颜色对象,可视化更加透明。通过覆盖层,使受强光照明。
9#
Src = Zero
Dest = Src color
Src = Dest color
Dest = Zero
结果(两个变种):乘法
- 不透明 区域接收屏幕缓冲区颜色乘以材质颜色。
- 透明区域是黑色的。
如果所有的材质是半透明的,这种组合可以用来创建彩色玻璃。
10#
Src = One minus Src color
Dest = Dest alpha
结果:
- 非白人的颜色,似乎完全不透明区域小,接收倒颜色。在α渐变褪色,它改变到总结的颜色。层重叠会导致颜色的强化。
- 如果漫反射材质颜色为白色,则完全不透明核心区域会接收屏幕缓冲区颜色,该颜色会随着 alpha 渐变的消退而变为总和颜色。
- 透明区域接收屏幕缓冲颜色。
- 改变漫射颜色乘数的大小变化核心领域(环大小的插图)。
- 完全黑色分散材质将导致呈现在屏幕缓冲区的颜色。
11#
Src = One minus Src color
Dest = One minus Src color
结果:类似于 以前的 组合,但有以下例外:
- 非白人的颜色,一个完全不透明区域接收倒似乎更大的规模和深颜色。在α梯度减弱,材质颜色显得沉闷,色彩,几乎看不见。
- 如果漫反射材质颜色为白色,则完全不透明核心区域会收到黑色,随着 alpha 渐变的消退,黑色会变为相加的反色。
和下面的特征是相同的:
- Transparent areas are of the screen buffer color.
- 改变漫反射颜色倍增器会改变核心区域的大小(图中环形区域的大小)。
- 完全黑色分散材质将导致呈现在屏幕缓冲区的颜色。
12#
Src = One minus Dest color
Dest = Dest Alpha
结果:
- 不透明 区域是明亮的且具有漫反射材质色调。
- 屏幕缓冲区的颜色越深,越饱和材质颜色。
- 透明区域是屏幕缓冲颜色。
- 完全黑色分散材质将导致呈现在屏幕缓冲区的颜色。
13#
Src = One minus Dest color
Dest = One minus Src alpha
结果:
- 在重叠区域,屏幕缓冲区的反转颜色变得越来越明显增加层数。
- 透明区域是屏幕缓冲颜色。
14#
Src = One minus Dest color
Dest = One minus Src color
结果:
- 在重叠区域,反向的颜色改变背景颜色和回来。
- 透明区域是屏幕缓冲颜色。
- 完全黑色分散材质将导致呈现在屏幕缓冲区的颜色。
15#
Src = Dest color
Dest = Dest alpha
结果:
- 这个组合更适合材质白色强或明亮的高价值的漫反射颜色。否则,材质颜色色彩是不可见的。
- 透明区域是屏幕缓冲颜色。
16#
Src = Dest color
Dest = Dest color
结果:
- 不透明 区域接收材质和屏幕缓冲区的总颜色。
- 透明区域是倍增的屏幕颜色 - 更暗,更饱和。
- 在重叠的领域,不透明和透明的材质颜色(根据α组件)地区愈演愈烈。