2012-04-13 557 views
0

我創建了一個着色器,能夠旋轉圖像約180°,並用黑色漸變疊加,但現在我想創建真正的透明度,而不是使用黑色作爲我的背景顏色。GLSL着色器 - 陰影與透明度(glasstable效果)

這是我走到這一步:

// Vertex Shader 
uniform highp mat4 u_modelViewMatrix; 
uniform highp mat4 u_projectionMatrix; 
attribute highp vec4 a_position; 
attribute lowp vec4 a_color; 
attribute highp vec2 a_texcoord; 
varying lowp vec4 v_color; 
varying highp vec2 v_texCoord; 
uniform int offset; 
uniform int space; 
uniform int vph; 
void main() 
{\ 
highp float h = float(offset)/float(vph); 
highp float s = float(space)/1000.0; 
highp vec4 pos = a_position; 
pos.y = pos.y - (h + s); 
gl_Position = (u_projectionMatrix * u_modelViewMatrix) * pos; 
    v_color = a_color; 
v_texCoord = vec2(a_texcoord.x, 1.0 - a_texcoord.y); 
} 

// Fragment Shader 
varying highp vec2 v_texCoord; 
uniform sampler2D u_texture0; 
uniform int gradient; 
void main() 
{ 
    lowp vec3 w = vec3(1.0,1.0,1.0); 
    lowp vec3 b = vec3(0.0,0.0,0.0); 
    lowp vec3 mix = mix(b, w, (v_texCoord.y-(float(gradient)/10.0))); 
    gl_FragColor = texture2D(u_texture0,v_texCoord) * vec4(mix, 1.0); 
} 

回答

1

半透明的顏色取代黑色在片段着色器:

void main() 
{ 
    lowp vec4 w = vec3(1.0,1.0,1.0,1.0); 
    lowp vec4 b = vec3(0.0,0.0,0.0,0.0); 
    lowp vec4 mix = mix(b, w, (v_texCoord.y-(float(gradient)/10.0))); 
    gl_FragColor = texture2D(u_texture0,v_texCoord) * mix; 
} 
+0

好吧,這是很容易和I'm相當肯定我」我已經嘗試過,但它沒有任何效果......也許時間可以治癒所有傷口。謝謝你克萊姆! – seveves 2012-04-23 08:35:18