Альфа смешивание при помощи текстуры
Есть две текстуры, одна цветовая, другая прозрачности (для колец планеты) Не понимаю, как в шейдере нужно сделать, чтоб в местах, где чёрный, цвет был прозрачен у цветовой карты.
Делаю что-то такое
alphaColor= texture(alphaTexture, fs_in.TexCoords).rgb;
diffuseColor= texture(mainDiffuseTexture, fs_in.TexCoords).rgb + alphaColor;
Но результат такой..В таком случае чёрный цвет хоть и отсекается, оставляя белый, но цветовая карта не зависит от карты прозрачности.

Решение написал в ответе, вот результат)

Ответы (2 шт):
Необходимо включить альфа-смешивание на стадии растеризации
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);

