vertex_shader "varying vec2 texcoord; varying vec3 shadowcoord; varying vec3 normal; void main() { gl_Position = ftransform(); texcoord = gl_MultiTexCoord0.xy; vec4 eye_pos = gl_ModelViewMatrix*gl_Vertex; shadowcoord = vec3(dot(gl_EyePlaneS[3], eye_pos), dot(gl_EyePlaneT[3], eye_pos), dot(gl_EyePlaneR[3], eye_pos)); normal = normalize(gl_NormalMatrix*gl_Normal); }"; fragment_shader "uniform sampler2D texture; uniform sampler2DShadow shadow; varying vec2 texcoord; varying vec3 shadowcoord; varying vec3 normal; void main() { float diffuse = max(dot(gl_LightSource[0].position.xyz, normal), 0.0); vec4 color = texture2D(texture, texcoord); gl_FragColor = vec4((0.3+diffuse*0.7*shadow2D(shadow, shadowcoord).r)*color.rgb, color.a); }";