You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

31 lines
920 B

  1. uniform vec4 U_AmbientLightColor;
  2. uniform vec4 U_AmbientMaterial;
  3. uniform vec3 U_LightPos;
  4. uniform vec4 U_DiffuseLightColor;
  5. uniform vec4 U_DiffuseMaterial;
  6. uniform vec3 U_EyePos;
  7. uniform vec4 U_SpecularLightColor;
  8. uniform vec4 U_SpecularMaterial;
  9. varying vec3 V_Normal;
  10. varying vec3 V_WorldPos;
  11. void main()
  12. {
  13. //ambient
  14. vec4 ambientColor = U_AmbientLightColor * U_AmbientMaterial;
  15. //diffuse
  16. vec3 N = normalize(V_Normal);
  17. vec3 L = normalize(U_LightPos);
  18. float diffuseIntensity = max(0.0, dot(L,N));
  19. vec4 diffuseColor = U_DiffuseLightColor * U_DiffuseMaterial * diffuseIntensity;
  20. //specular
  21. vec3 reflectDir = normalize(reflect(-L,N));//-L��������������ͨ��reflect�����󵽷����ⷽ��
  22. vec3 viewDir = normalize(U_EyePos - V_WorldPos);
  23. vec4 specularColor = U_SpecularLightColor * U_SpecularMaterial * pow(max(0.0, dot(viewDir,reflectDir)), 64.0);
  24. gl_FragColor = ambientColor + diffuseColor + specularColor;
  25. }