Shadow.glsl 858 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "Uniforms.glsl"
  2. #include "Samplers.glsl"
  3. #include "Transform.glsl"
  4. #ifdef VSM_SHADOW
  5. varying vec4 vTexCoord;
  6. #else
  7. varying vec2 vTexCoord;
  8. #endif
  9. void VS()
  10. {
  11. mat4 modelMatrix = iModelMatrix;
  12. vec3 worldPos = GetWorldPos(modelMatrix);
  13. gl_Position = GetClipPos(worldPos);
  14. #ifdef VSM_SHADOW
  15. vTexCoord = vec4(GetTexCoord(iTexCoord), gl_Position.z, gl_Position.w);
  16. #else
  17. vTexCoord = GetTexCoord(iTexCoord);
  18. #endif
  19. }
  20. void PS()
  21. {
  22. #ifdef ALPHAMASK
  23. float alpha = texture2D(sDiffMap, vTexCoord.xy).a;
  24. if (alpha < 0.5)
  25. discard;
  26. #endif
  27. #ifdef VSM_SHADOW
  28. float depth = vTexCoord.z / vTexCoord.w * 0.5 + 0.5;
  29. gl_FragColor = vec4(depth, depth * depth, 1.0, 1.0);
  30. #else
  31. gl_FragColor = vec4(1.0);
  32. #endif
  33. }