формула для значения Альфа при смешивании двух прозрачных цветов

предположим, что альфа 1 означает полностью непрозрачный и 0 означает полностью прозрачный. допустим, у меня есть два черных изображения, которые имеют прозрачность 50% (alpha = 0.5).

если они уложены друг на друга, результирующая прозрачность равна 0.75, верно?

если бы у них была альфа 0,25, результат был бы около 0,5, верно?

если бы у них была альфа 0,9, результат был бы около 0,97, верно?

Как вы можете добраться до них цифры?

другими словами, Я ищу функцию, которая получает результирующее Альфа-значение из двух других Альфа-значений.

float alpha = f(float alphaBelow, float alphaAbove)
{
     //TODO implement
}

3 ответов


этот ответ математически такой же, как Джейсон, но это фактическая формула, как вы найдете ее в справочный материал.

float blend(float alphaBelow, float alphaAbove) 
{ 
    return alphaBelow + (1.0 - alphaBelow) * alphaAbove; 
} 

float blend(float alphaBelow, float alphaAbove)
{
    return alphaBelow + alphaAbove - alphaBelow * alphaAbove;
}

эта функция предполагает, что оба параметра равны 0..1, где 0 полностью прозрачно, а 1 полностью непрозрачно.


Photoshop выполняет следующие вычисления:

float blend(float alphaBelow, float alphaAbove)
{
    return min(1,alphaBelow+(1-alphaBelow)*alphaAbove);
}