// // Vertex shader for shadow mapping // // Author: Randi Rost, Philip Rideout // // Copyright (c) 2003-2006: 3Dlabs, Inc. // // See 3Dlabs-License.txt for license information // attribute float Accessibility; varying vec4 ShadowCoord; // Ambient and diffuse scale factors. const float As = 1.0 / 1.5; const float Ds = 1.0 / 3.0; void main() { vec4 ecPosition = gl_ModelViewMatrix * gl_Vertex; vec3 ecPosition3 = (vec3(ecPosition)) / ecPosition.w; vec3 VP = vec3(gl_LightSource[0].position) - ecPosition3; VP = normalize(VP); vec3 normal = normalize(gl_NormalMatrix * gl_Normal); float diffuse = max(0.0, dot(normal, VP)); float scale = min(1.0, Accessibility * As + diffuse * Ds); vec4 texCoord = gl_TextureMatrix[1] * gl_Vertex; ShadowCoord = texCoord / texCoord.w; gl_FrontColor = vec4(scale * gl_Color.rgb, gl_Color.a); gl_Position = ftransform(); }