Advertisement
Guest User

Untitled

a guest
Oct 30th, 2014
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.89 KB | None | 0 0
  1. #import "MatDefs/Shadow/ShadowsMS15.glsllib"
  2.  
  3. out vec4 outFragColor;
  4.  
  5. #ifdef PSSM
  6. in float shadowPosition;
  7. #endif
  8.  
  9. in vec4 projCoord0;
  10. in vec4 projCoord1;
  11. in vec4 projCoord2;
  12. in vec4 projCoord3;
  13.  
  14. #ifdef POINTLIGHT
  15. in vec4 projCoord4;
  16. in vec4 projCoord5;
  17. in vec4 worldPos;
  18. uniform vec3 m_LightPos;
  19. uniform float m_LightRadius;
  20. #endif
  21.  
  22. #ifdef DISCARD_ALPHA
  23. #ifdef COLOR_MAP
  24. uniform sampler2D m_ColorMap;
  25. #else
  26. uniform sampler2D m_DiffuseMap;
  27. #endif
  28. uniform float m_AlphaDiscardThreshold;
  29. varying vec2 texCoord;
  30. #endif
  31.  
  32. #ifdef FADE
  33. uniform vec2 m_FadeInfo;
  34. #endif
  35.  
  36.  
  37.  
  38. #ifdef NUM_LIGHTS
  39.  
  40. varying float shadsub0;
  41. varying float shadsub1;
  42. varying float shadsub2;
  43. varying float shadsub3;
  44. varying float shadsub4;
  45. varying float shadsub5;
  46.  
  47. varying float initMaxss;
  48.  
  49. #endif
  50.  
  51. void main(){
  52.  
  53. #ifdef DISCARD_ALPHA
  54. #ifdef COLOR_MAP
  55. float alpha = texture2D(m_ColorMap,texCoord).a;
  56. #else
  57. float alpha = texture2D(m_DiffuseMap,texCoord).a;
  58. #endif
  59.  
  60. if(alpha < m_AlphaDiscardThreshold){
  61. discard;
  62. }
  63. #endif
  64.  
  65. float shadow = 1.0;
  66. #ifdef POINTLIGHT
  67. shadow = getPointLightShadows(worldPos, m_LightPos,
  68. m_ShadowMap0,m_ShadowMap1,m_ShadowMap2,m_ShadowMap3,m_ShadowMap4,m_ShadowMap5,
  69. projCoord0, projCoord1, projCoord2, projCoord3, projCoord4, projCoord5);
  70. #else
  71. #ifdef PSSM
  72. shadow = getDirectionalLightShadows(m_Splits, shadowPosition,
  73. m_ShadowMap0,m_ShadowMap1,m_ShadowMap2,m_ShadowMap3,
  74. projCoord0, projCoord1, projCoord2, projCoord3);
  75. #else
  76. //spotlight
  77. shadow = getSpotLightShadows(m_ShadowMap0,projCoord0);
  78. #endif
  79. #endif
  80.  
  81. #ifdef FADE
  82. shadow = max(0.0,mix(shadow,1.0,(shadowPosition - m_FadeInfo.x) * m_FadeInfo.y));
  83. #endif
  84.  
  85.  
  86.  
  87. #ifdef NUM_LIGHTS
  88. if (shadow < 1.0)
  89. {
  90. vec3 lightVector;
  91. vec4 lightVectorw;
  92. vec4 lightPosition;
  93. float dist;
  94. //float attenuation;
  95.  
  96. float shadsub = 0.0;
  97. float maxss = initMaxss;
  98.  
  99.  
  100. for (int i = 0; i < NUM_LIGHTS; i++)
  101. {
  102. if (maxss >= 1.0) break; // Dont need more loops.
  103.  
  104. if (i == 0) { shadsub = shadsub0; }
  105. else if (i == 1) { shadsub = shadsub1; }
  106. else if (i == 2) { shadsub = shadsub2; }
  107. else if (i == 3) { shadsub = shadsub3; }
  108. else if (i == 4) { shadsub = shadsub4; }
  109. else if (i == 5) { shadsub = shadsub5; }
  110.  
  111. maxss = max(maxss, shadsub);
  112.  
  113. }
  114.  
  115. maxss = clamp(maxss, 0.0, 1.0);
  116. shadow += maxss;
  117. }
  118.  
  119. #endif
  120.  
  121. shadow = shadow * m_ShadowIntensity + (1.0 - m_ShadowIntensity);
  122.  
  123. outFragColor = vec4(shadow, shadow, shadow, 1.0);
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement