Истинный альфа-блендинг в webgl

По интернету гуляет стандартный способ

gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA

Или же

gl.ONE, gl.ONE_MINUS_SRC_ALPHA

для предумноженных изображений. Он идеален для наложения прозрачных текстур на непрозрачный фон.

Но что делать если мне нужно наложить текстуру с прозрачностью на фон с прозрачностью? Нашел в википедии формулу (картинка). Как я понимаю, через blendfunc её никак не сделать.. или сделать?

alpha blending

Зачем мне это? Хочу создать что-то типо рисовалки. Нужно отрисовать на canvas штрих кисти с учетом прозрачности как фона, так и самой кисти.

Как вариант: использовать два фреймбуффера и отрисовывать сначала сам canvas на один из них, а потом уже оба смешивать на canvas. Но такие костыли делать неохота. Есть ли способ сделать нормальное смешивание за одну отрисовку?


Ответы (0 шт):