/* * File: ApertureSineGratingShader.frag.txt * Shader for drawing of basic parameterized sine grating patches. * Applies a circular aperture of radius 'Radius'. * * (c) 2010 by Mario Kleiner, licensed under MIT license. * */ uniform float Radius; uniform vec2 Center; uniform vec4 Offset; varying vec4 baseColor; varying float Phase; varying float FreqTwoPi; void main() { /* Query current output texel position: */ vec2 pos = gl_TexCoord[0].xy; /* If distance to center (aka radius of pixel) > Radius, discard this pixel: */ if (distance(pos, Center) > Radius) discard; /* Evaluate sine grating at requested position, frequency and phase: */ float sv = sin(pos.x * FreqTwoPi + Phase); /* Multiply/Modulate base color and alpha with calculated sine */ /* values, add some constant color/alpha Offset, assign as final fragment */ /* output color: */ gl_FragColor = (baseColor * sv) + Offset; }