shadowMap.fragment.fx 788 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #ifdef GL_ES
  2. precision mediump float;
  3. #endif
  4. vec4 pack(float depth)
  5. {
  6. const vec4 bitOffset = vec4(255. * 255. * 255., 255. * 255., 255., 1.);
  7. const vec4 bitMask = vec4(0., 1. / 255., 1. / 255., 1. / 255.);
  8. vec4 comp = fract(depth * bitOffset);
  9. comp -= comp.xxyz * bitMask;
  10. return comp;
  11. }
  12. // Thanks to http://devmaster.net/
  13. vec2 packHalf(float depth)
  14. {
  15. const vec2 bitOffset = vec2(1.0 / 255., 0.);
  16. vec2 color = vec2(depth, fract(depth * 255.));
  17. return color - (color.yy * bitOffset);
  18. }
  19. #ifndef VSM
  20. varying vec4 vPosition;
  21. #endif
  22. void main(void)
  23. {
  24. #ifdef VSM
  25. float moment1 = gl_FragCoord.z / gl_FragCoord.w;
  26. float moment2 = moment1 * moment1;
  27. gl_FragColor = vec4(packHalf(moment1), packHalf(moment2));
  28. #else
  29. gl_FragColor = pack(vPosition.z / vPosition.w);
  30. #endif
  31. }