circle_mask.glsl 507 B

123456789101112131415161718
  1. uniform sampler2D texture;
  2. uniform vec2 resolution;
  3. vec4 circle(vec2 uv, vec2 pos, float rad, vec4 color) {
  4. float d = smoothstep(0.0, 2.0, length(pos - uv) - rad);
  5. float t = clamp(d, 0.0, 1.0);
  6. return vec4(color.rgb, color.a * (1.0 - t));
  7. }
  8. void main() {
  9. vec2 uv = gl_TexCoord[0].xy * resolution;
  10. vec2 center = resolution * 0.5;
  11. float radius = 0.5 * resolution.y - 1.0;
  12. vec4 texture_color = texture2D(texture, gl_TexCoord[0].xy);
  13. gl_FragColor = circle(uv, center, radius, texture_color);
  14. }