2012-04-13 17 views
0

イメージを約180°回転させて黒いグラデーションでオーバーレイすることができるシェーダを作成しましたが、今は黒ではなく実際の透明度を作成したい背景色。GLSLシェーダ - 透明(鮮明な効果)を持つ影

これは私がこれまでに得たものである:

// 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

を[OK]を、それは私が「ことをかなり確信して簡単に - 私でしたすでにこれを試しましたが、何の効果もありませんでした。おそらく時間はすべての傷を治すでしょう。ありがとう、クレム! – seveves

関連する問題