Я создаю следующий шейдер в GLSL, цель которого - смешать 2 текстуры в соответствии с альфа-каналом light_text.К сожалению, альфа-канал всегда установлен в 1 (хотя я уверен, что моя исходная текстура имеет значения, варьирующиеся от 0 до 1), я увидел в другом вопросе SO, что мне нужно где-то поставить флаг GL_RGBA, потому что он по умолчанию находится в GL_RGB, но гдея бы поставил это в своем примере?Вот код:
const vec3 lumCoeff = vec3(0.2125, 0.7154, 0.0721);
uniform sampler2D world_tex;
uniform sampler2D light_tex;
uniform float Alpha;
uniform vec3 NewColor;
void main()
{
vec3 curColor = vec3(texture2D(world_tex, gl_TexCoord[0].xy ));
vec3 lightColor = vec3(texture2D(light_tex, gl_TexCoord[0].xy ));
float graylvl = dot(curColor , lumCoeff);
vec3 appliedLight = lightColor + curColor;
float coeff = texture2D(light_tex, gl_TexCoord[0].xy ).a;// <--- equals 1 always
vec3 color_saturated = mix(vec3(graylvl), curColor, Alpha);
gl_FragColor = vec4( mix(color_saturated + NewColor, appliedLight, coeff) , 1.0);
}
спасибо