precision highp float; precision mediump float; uniform mat4 u_mat4_ads; varying vec3 vEyeNormal; varying vec3 vPosition3; void main() { vec4 amb = u_mat4_ads[0];//vec4 (0.0, 0.0, 0.0, 1.0); vec4 diff = u_mat4_ads[1];//vec4 (1.0, 1.0, 1.0, 1.0); vec4 spcl = u_mat4_ads[2];//vec4 (1.0, 1.0, 1.0, 1.0); vec3 lpos = u_mat4_ads[3].xyz;//vec3(-10.0, 10.0, 10.0); vec3 vLightDir = normalize(lpos - vPosition3); float tdiff = max(0.0, dot(vEyeNormal, vLightDir)); vec4 v_v4_clr = tdiff * diff; v_v4_clr += amb; vec3 vReflection = normalize(reflect(-vLightDir, vEyeNormal)); float spec = max(0.0, dot(vEyeNormal, vReflection)); float fSpec = pow(spec, 128.0); v_v4_clr.rgb += vec3(fSpec, fSpec, fSpec); v_v4_clr.rgba *= u_mat4_ads[3].w; gl_FragColor = v_v4_clr; }