| #ifdef GL_ES |
| precision mediump float; |
| #endif |
| |
| uniform mat3 outputToWorld; |
| |
| uniform vec4 color; |
| uniform int blades; |
| uniform float intensity; |
| uniform float angle; |
| uniform float bias; |
| uniform float sharpness; |
| |
| float blades_ = float(blades); |
| float angle_ = radians(angle); |
| float bias_ = .01 * bias; |
| |
| |
| |
| |
| void main( void ) |
| { |
| vec2 p = .03 * (outputToWorld * vec3(gl_FragCoord.xy, 1.0)).xy; |
| |
| float a = atan(p.y, p.x) - angle_; |
| float blade = intensity * clamp(pow(sin(a * blades_) + bias_, sharpness), 0.0, 1.0); |
| |
| gl_FragColor = vec4(color.rgb * color.a, color.a); |
| gl_FragColor = gl_FragColor * (1.0 + blade) / length(p); |
| } |
| |