shadowMap.fragment.fx 752 B

1234567891011121314151617181920212223242526272829303132333435
  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. void main(void)
  20. {
  21. #ifdef VSM
  22. float moment1 = gl_FragCoord.z / gl_FragCoord.w;
  23. float moment2 = moment1 * moment1;
  24. gl_FragColor = vec4(packHalf(moment1), packHalf(moment2));
  25. #else
  26. gl_FragColor = pack(gl_FragCoord.z / gl_FragCoord.w);
  27. #endif
  28. }