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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file avatarAlphaF.glsl
  3.  *
  4.  * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc.
  5.  * $License$
  6.  */
  7. uniform sampler2D diffuseMap;
  8. uniform sampler2DShadow shadowMap0;
  9. uniform sampler2DShadow shadowMap1;
  10. uniform sampler2DShadow shadowMap2;
  11. uniform sampler2DShadow shadowMap3;
  12. uniform sampler2D noiseMap;
  13. uniform mat4 shadow_matrix[6];
  14. uniform vec4 shadow_clip;
  15. vec3 atmosLighting(vec3 light);
  16. vec3 scaleSoftClip(vec3 light);
  17. varying vec3 vary_ambient;
  18. varying vec3 vary_directional;
  19. varying vec4 vary_position;
  20. varying vec3 vary_normal;
  21. void main() 
  22. {
  23. float shadow = 1.0;
  24. vec4 pos = vary_position;
  25. vec3 norm = normalize(vary_normal);
  26. vec3 nz = texture2D(noiseMap, gl_FragCoord.xy/128.0).xyz;
  27. if (pos.z > -shadow_clip.w)
  28. {
  29. if (pos.z < -shadow_clip.z)
  30. {
  31. vec4 lpos = shadow_matrix[3]*pos;
  32. shadow = shadow2DProj(shadowMap3, lpos).x;
  33. }
  34. else if (pos.z < -shadow_clip.y)
  35. {
  36. vec4 lpos = shadow_matrix[2]*pos;
  37. shadow = shadow2DProj(shadowMap2, lpos).x;
  38. }
  39. else if (pos.z < -shadow_clip.x)
  40. {
  41. vec4 lpos = shadow_matrix[1]*pos;
  42. shadow = shadow2DProj(shadowMap1, lpos).x;
  43. }
  44. else
  45. {
  46. vec4 lpos = shadow_matrix[0]*pos;
  47. shadow = shadow2DProj(shadowMap0, lpos).x;
  48. }
  49. }
  50. vec4 col = vec4(vary_ambient + vary_directional*shadow, gl_Color.a);
  51. vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * col;
  52. color.rgb = atmosLighting(color.rgb);
  53. color.rgb = scaleSoftClip(color.rgb);
  54. gl_FragColor = color;
  55. }