Как смешать 2 прозрачных слоя? - PullRequest
0 голосов
/ 15 ноября 2018

Например, у нас есть 2 слоя прозрачности: первый - black (0, 0, 0, 0.75), а второй - white (255, 255, 255, 0.64). Я не знаю, как их смешать.

Но я знаю, как смешать один непрозрачный и один прозрачный слои. Это выглядит так: https://wikimedia.org/api/rest_v1/media/math/render/svg/1e35c32f13d5eedc7ac21e9e566796dd048a31e6

1 Ответ

0 голосов
/ 15 ноября 2018

Предположим, что цвет фона (C, 1) (RGB, A), первый слой (A, s), а второй слой (B, t). Применяя уравнение смешивания дважды:

C' = t * B + (1-t) * [s * A + (1-s) * C]

     = [t * B + (1-t) * s * A] + (1-t) * (1-s) * C

Мы видим, что новый эффективный коэффициент смешивания равен 1 - (1-s) * (1-t). Чтобы получить комбинированный цвет прозрачности, разделите первый член на это:

r := 1 - (1-s) * (1-t)

D := [t * B + (1-t) * s * A] / r

--> C' = r * D + (1-r) * C

т.е. новый эффективный слой прозрачности задается как (D, r).

В вашем примере значения будут D = (179, 179, 179) и r = 0.91.

...