shadowmap_fp.glsl 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. uniform sampler2D TextureMap;
  2. uniform sampler2DShadow ShadowMap;
  3. uniform sampler2D LightspotMap;
  4. uniform bool Softly;
  5. uniform float Scale;
  6. void main()
  7. {
  8. float shadow = shadow2DProj(ShadowMap, gl_TexCoord[1]).r;
  9. float proj = texture2DProj(LightspotMap, gl_TexCoord[1]).r;
  10. if (Softly)
  11. {
  12. float shadow1 = shadow2DProj(ShadowMap, gl_TexCoord[1]+vec4(-0.00048,0.0,0.0,0.0)*Scale).r;
  13. float shadow2 = shadow2DProj(ShadowMap, gl_TexCoord[1]+vec4(0.00048,0.0,0.0,0.0)*Scale).r;
  14. float shadow3 = shadow2DProj(ShadowMap, gl_TexCoord[1]+vec4(0.0,0.00048,0.0,0.0)*Scale).r;
  15. float shadow4 = shadow2DProj(ShadowMap, gl_TexCoord[1]+vec4(0.0,-0.00048,0.0,0.0)*Scale).r;
  16. float shadow5 = shadow2DProj(ShadowMap, gl_TexCoord[1]+vec4(-0.00096,0.0,0.0,0.0)*Scale).r;
  17. float shadow6 = shadow2DProj(ShadowMap, gl_TexCoord[1]+vec4(0.00096,0.0,0.0,0.0)*Scale).r;
  18. float shadow7 = shadow2DProj(ShadowMap, gl_TexCoord[1]+vec4(0.0,0.00096,0.0,0.0)*Scale).r;
  19. float shadow8 = shadow2DProj(ShadowMap, gl_TexCoord[1]+vec4(0.0,-0.00096,0.0,0.0)*Scale).r;
  20. float shadow9 = shadow2DProj(ShadowMap, gl_TexCoord[1]+vec4(-0.00144,0.0,0.0,0.0)*Scale).r;
  21. float shadow10 = shadow2DProj(ShadowMap, gl_TexCoord[1]+vec4(0.00144,0.0,0.0,0.0)*Scale).r;
  22. float shadow11 = shadow2DProj(ShadowMap, gl_TexCoord[1]+vec4(0.0,0.00144,0.0,0.0)*Scale).r;
  23. float shadow12 = shadow2DProj(ShadowMap, gl_TexCoord[1]+vec4(0.0,-0.00144,0.0,0.0)*Scale).r;
  24. shadow = shadow + shadow1 + shadow2 + shadow3 + shadow4;
  25. shadow = shadow + shadow5 + shadow6 + shadow7 + shadow8;
  26. shadow = shadow + shadow9 + shadow10 + shadow11 + shadow12;
  27. shadow = shadow * 0.08;
  28. }
  29. shadow = shadow * proj;
  30. vec4 color = texture2D(TextureMap, gl_TexCoord[0].st);
  31. gl_FragColor = color * vec4(mix(shadow, 1.0, 0.2));
  32. gl_FragColor.a = color.a;
  33. }