1 precision mediump float;
2 varying mediump vec2 vTexCoord;
3 varying mediump vec3 vLightDirection;
4 varying mediump vec3 vHalfVector;
5 uniform sampler2D sDiffuse;
6 uniform sampler2D sNormal;
7 uniform sampler2D sGloss;
8 uniform lowp vec4 uColor;
12 vec4 texture = texture2D( sDiffuse, vTexCoord );
13 vec3 normal = normalize( texture2D( sNormal, vTexCoord ).xyz * 2.0 - 1.0 );
14 vec4 glossMap = texture2D( sGloss, vTexCoord );
16 float lightDiffuse = max( 0.0, dot( normal, normalize(vLightDirection) ) );
17 lightDiffuse = lightDiffuse * 0.5 + 0.5;
19 float shininess = pow (max (dot (normalize( vHalfVector ), normal), 0.0), 16.0);
21 gl_FragColor = vec4( texture.rgb * uColor.rgb * lightDiffuse + shininess * glossMap.rgb, texture.a * uColor.a);