ShadowBlur.glsl 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. #include "Uniforms.glsl"
  2. #include "Samplers.glsl"
  3. #include "Transform.glsl"
  4. #include "ScreenPos.glsl"
  5. #ifdef COMPILEPS
  6. uniform vec2 cBlurOffsets;
  7. #endif
  8. varying vec2 vScreenPos;
  9. void VS()
  10. {
  11. mat4 modelMatrix = iModelMatrix;
  12. vec3 worldPos = GetWorldPos(modelMatrix);
  13. gl_Position = GetClipPos(worldPos);
  14. vScreenPos = GetScreenPosPreDiv(gl_Position);
  15. }
  16. void PS()
  17. {
  18. vec2 color = vec2(0.0);
  19. color += 0.015625 * texture2D(sDiffMap, vScreenPos + vec2(-3.0) * cBlurOffsets).rg;
  20. color += 0.09375 * texture2D(sDiffMap, vScreenPos + vec2(-2.0) * cBlurOffsets).rg;
  21. color += 0.234375 * texture2D(sDiffMap, vScreenPos + vec2(-1.0) * cBlurOffsets).rg;
  22. color += 0.3125 * texture2D(sDiffMap, vScreenPos).rg;
  23. color += 0.234375 * texture2D(sDiffMap, vScreenPos + vec2(1.0) * cBlurOffsets).rg;
  24. color += 0.09375 * texture2D(sDiffMap, vScreenPos + vec2(2.0) * cBlurOffsets).rg;
  25. color += 0.015625 * texture2D(sDiffMap, vScreenPos + vec2(3.0) * cBlurOffsets).rg;
  26. gl_FragColor = vec4(color, 0.0, 0.0);
  27. }