2

我正在尝试模拟 Adob​​e Photoshop 的混合模式 - 变暗。

我了解基本的 Darken 原则:Darken(a,b) = min(a,b)。例如:

Darken( (.2, .3, .8), (.5, .1, .4) ) = (.2, .1, .4)   // (r, g, b)

但我有它的透明度。在 Photoshop 中,Darken 是这样工作的:

Darken( (0, 1, 0, .5), (0, 0, 0, .5) ) = (0, .3, 0, .75)   // (r, g, b, a)

在黑色上加深绿色是绿色。我明白了,输出 alpha 以经典方式计算:ao = aa + ab * (1-aa)。你知道其他值是如何计算的吗?

顺便提一句。变暗模式是可交换的。

4

2 回答 2

1

所以最后我发现了。

在 Darken 模式下,合成与 Normal 模式下相同,但如果后通道较暗,则前后通道会翻转。

对于每个通道: Darken(a, b) = a < b ? 范数(a,b):范数(b,a);

所以在我的顶级示例中,对于绿色和 alpha:

Darken( (1, .5), (0, .5) ) =  Norm( (0, .5), (1, .5) ) 
alpha = (.5 + .5*(1-.5)) = .75
green = (0*.5 + 1*.5*(1-.5)) / .75 = (0 + .25) / .75 = 0.333333
于 2012-11-19T17:06:28.037 回答
0

好吧,实际上,它涉及的更多一些。这里还有其他类似的问题,可以回答这个问题。最好使用的可能是恰当命名的:

RGB 值的加色混合算法

于 2012-11-18T23:20:25.620 回答