lightFuncSpecularV.glsl
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:1k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file lightFuncSpecularV.glsl
  3.  *
  4.  * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc.
  5.  * $License$
  6.  */
  7. float calcDirectionalLight(vec3 n, vec3 l)
  8. {
  9. float a = max(dot(n,l),0.0);
  10. return a;
  11. }
  12. float calcDirectionalSpecular(vec3 view, vec3 n, vec3 l)
  13. {
  14. return pow(max(dot(reflect(view, n),l), 0.0),8.0);
  15. }
  16. float calcDirectionalLightSpecular(inout vec4 specular, vec3 view, vec3 n, vec3 l, vec3 lightCol, float da)
  17. {
  18. specular.rgb += calcDirectionalSpecular(view,n,l)*lightCol*da;
  19. return max(dot(n,l),0.0);
  20. }
  21. vec3 calcPointLightSpecular(inout vec4 specular, vec3 view, vec3 v, vec3 n, vec3 l, float r, float pw, vec3 lightCol)
  22. {
  23. //get light vector
  24. vec3 lv = l-v;
  25. //get distance
  26. float d = length(lv);
  27. //normalize light vector
  28. lv *= 1.0/d;
  29. //distance attenuation
  30. float da = clamp(1.0/(r * d), 0.0, 1.0);
  31. //angular attenuation
  32. da *= calcDirectionalLightSpecular(specular, view, n, lv, lightCol, da);
  33. return da*lightCol;
  34. }