uniform sampler2D sTexture; uniform sampler2D sNormalMap; uniform bool bUseDot3; varying mediump vec2 TexCoord; varying mediump vec3 Light; void main() { if(bUseDot3) { /* Note: In the normal map red = y, green = x, blue = z which is why when we get the normal from the texture we use the swizzle .grb so the colours are mapped to the correct co-ordinate variable. */ mediump vec3 fNormal = texture2D(sNormalMap, TexCoord).grb; mediump float fNDotL = dot((fNormal - 0.5) * 2.0, Light); gl_FragColor = texture2D(sTexture, TexCoord) * fNDotL; } else gl_FragColor = texture2D(sTexture, TexCoord) * Light.x; }