Альфа смешивание при помощи текстуры

Есть две текстуры, одна цветовая, другая прозрачности (для колец планеты) Не понимаю, как в шейдере нужно сделать, чтоб в местах, где чёрный, цвет был прозрачен у цветовой карты.

введите сюда описание изображения

введите сюда описание изображения

Делаю что-то такое

alphaColor= texture(alphaTexture, fs_in.TexCoords).rgb;
diffuseColor= texture(mainDiffuseTexture, fs_in.TexCoords).rgb + alphaColor;

Но результат такой..В таком случае чёрный цвет хоть и отсекается, оставляя белый, но цветовая карта не зависит от карты прозрачности. введите сюда описание изображения

Решение написал в ответе, вот результат) введите сюда описание изображения


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

Автор решения: user7860670

Необходимо включить альфа-смешивание на стадии растеризации

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

А потом выдавать цвет в шейдере как RGBA.

→ Ссылка
Автор решения: Глеб Труфанов

Собственно, товарищ user7860670 был прав, спасибо) Лично для себя в виде решения сделал такое:

vec4 alpha = texture(alphaTexture, fs_in.TexCoords);
vec4 ringColor = vec4(texture(mainDiffuseTexture, fs_in.TexCoords).rgb, (alpha.r + alpha.g + alpha.b) * 0.33333)

Последний параметр 0.33333 можно менять, как вам угодно, да и вообще формулу под себя подстраивать. Не забудьте перед отрисовкой включить альфа-смешивание:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
_planetaryRing->Draw();
glDisable(GL_BLEND);
→ Ссылка