// Fragment shader for 2D texture with shadow attenuation // Brian Paul uniform sampler2D tex2d; uniform vec3 lightPos; void main() { // XXX should compute this from lightPos vec2 shadowCenter = vec2(-0.25, -0.25); // d = distance from center float d = distance(gl_TexCoord[0].xy, shadowCenter); // attenuate and clamp d = clamp(d * d * d, 0.0, 2.0); // modulate texture by d for shadow effect gl_FragColor = d * texture2D(tex2d, gl_TexCoord[0].xy, 0.0); }