22 lines
487 B
GLSL
22 lines
487 B
GLSL
// 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);
|
|
}
|