You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CircleWaveMaterial.glsl 1.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. uniform vec4 color;
  2. uniform float speed;
  3. uniform float count;
  4. uniform float gradient;
  5. czm_material czm_getMaterial(czm_materialInput materialInput)
  6. {
  7. czm_material material = czm_getDefaultMaterial(materialInput);
  8. material.diffuse = 1.5 * color.rgb;
  9. vec2 st = materialInput.st;
  10. float dis = distance(st, vec2(0.5, 0.5));
  11. float per = fract(czm_frameNumber * speed / 1000.0);
  12. if(count == 1.0){
  13. if(dis > per * 0.5){
  14. discard;
  15. }else {
  16. material.alpha = color.a * dis / per / 2.0;
  17. }
  18. } else {
  19. vec3 str = materialInput.str;
  20. if(abs(str.z) > 0.001){
  21. discard;
  22. }
  23. if(dis > 0.5){
  24. discard;
  25. } else {
  26. float perDis = 0.5 / count;
  27. float disNum;
  28. float bl = 0.0;
  29. for(int i = 0; i <= 999; i++){
  30. if(float(i) <= count){
  31. disNum = perDis * float(i) - dis + per / count;
  32. if(disNum > 0.0){
  33. if(disNum < perDis){
  34. bl = 1.0 - disNum / perDis;
  35. }
  36. else if(disNum - perDis < perDis){
  37. bl = 1.0 - abs(1.0 - disNum / perDis);
  38. }
  39. material.alpha = pow(bl,(1.0 + 10.0 * (1.0 - gradient)));
  40. }
  41. }
  42. }
  43. }
  44. }
  45. return material;
  46. }