FadeMaterial.glsl 943 B

123456789101112131415161718192021222324252627282930313233343536
  1. uniform vec4 fadeInColor;
  2. uniform vec4 fadeOutColor;
  3. uniform float maximumDistance;
  4. uniform bool repeat;
  5. uniform vec2 fadeDirection;
  6. uniform vec2 time;
  7. float getTime(float t, float coord)
  8. {
  9. float scalar = 1.0 / maximumDistance;
  10. float q = distance(t, coord) * scalar;
  11. if (repeat)
  12. {
  13. float r = distance(t, coord + 1.0) * scalar;
  14. float s = distance(t, coord - 1.0) * scalar;
  15. q = min(min(r, s), q);
  16. }
  17. return clamp(q, 0.0, 1.0);
  18. }
  19. czm_material czm_getMaterial(czm_materialInput materialInput)
  20. {
  21. czm_material material = czm_getDefaultMaterial(materialInput);
  22. vec2 st = materialInput.st;
  23. float s = getTime(time.x, st.s) * fadeDirection.s;
  24. float t = getTime(time.y, st.t) * fadeDirection.t;
  25. float u = length(vec2(s, t));
  26. vec4 color = mix(fadeInColor, fadeOutColor, u);
  27. material.emission = color.rgb;
  28. material.alpha = color.a;
  29. return material;
  30. }