precision highp float; varying vec2 v_TexCoords; uniform sampler2D u_Texture; float luma(vec3 v) { return dot(v, vec3(0.2989, 0.5870, 0.1140)); } void main() { vec2 uv = vec2(v_TexCoords.x, 1.0 - v_TexCoords.y); vec4 base; base.xyz = texture2D(u_Texture, uv).xyz; base.w = luma(base.xyz); gl_FragColor = base; }