circle.fs 596 B

12345678910111213141516171819202122232425262728
  1. #version 330
  2. // Input vertex attributes (from vertex shader)
  3. in vec2 fragTexCoord;
  4. in vec4 fragColor;
  5. uniform float radius;
  6. uniform float power;
  7. // Output fragment color
  8. out vec4 finalColor;
  9. void main()
  10. {
  11. float r = radius;
  12. vec2 p = fragTexCoord - vec2(0.5);
  13. if (length(p) <= 0.5) {
  14. float s = length(p) - r;
  15. if (s <= 0) {
  16. finalColor = fragColor*1.5;
  17. } else {
  18. float t = 1 - s / (0.5 - r);
  19. finalColor = mix(vec4(fragColor.xyz, 0), fragColor*1.5, pow(t, power));
  20. }
  21. } else {
  22. finalColor = vec4(0);
  23. }
  24. }