1
我試圖創建混合2種顏色(實際上圖像和顏色作爲覆蓋圖像)的效果,就像在「正常混合」模式的Photoshop「顏色覆蓋」glsl着色器 - 顏色混合,正常模式(像在Photoshop中)
進出口使用libgdx
這是我迄今爲止
attribute vec4 a_position;
attribute vec4 a_color;
attribute vec2 a_texCoord0;
uniform mat4 u_projTrans;
varying vec4 v_color;
varying vec2 v_texCoords;
void main()
{
v_color = a_color;
v_texCoords = a_texCoord0;
gl_Position = u_projTrans * a_position;
}
和碎片
#ifdef GL_ES
#define LOWP lowp
precision mediump float;
#else
#define LOWP
#endif
varying LOWP vec4 v_color;
varying vec2 v_texCoords;
uniform sampler2D u_texture;
void main()
{
vec4 curColor = texture2D(u_texture, v_texCoords);
vec3 cA = curColor.rgb;//color A, background
vec3 cB = v_color.rgb;//color B, overlay
float aA = curColor.a;
float aB = v_color.a;
vec3 color = (cA * aA + cB * aB * (1 - aA))/aA + aB * (1 - aA);
float alpha = aA + aB * (1 - aA);
gl_FragColor = vec4(color, alpha);
}
我用公式顏色和alpha從wikipedia
當我使用該着色器,沒有任何反應,其被繪製與該着色器對象是透明的,不可見的