varying vec3 Normal; void vsMain() { Normal = normalize(gl_NormalMatrix*gl_Normal); gl_Position = gl_ModelViewProjectionMatrix*gl_Vertex; } uniform vec3 Diffuse; uniform vec3 Specular; uniform vec3 EdgeColor; uniform float EdgeThreshold; uniform float SpecularThreshold; varying vec3 Light; void psMain() { vec3 color = Diffuse; vec3 light = normalize(Light); float lightDotNormal = dot(light, Normal); if (abs(lightDotNormal) < EdgeThreshold) { color = EdgeColor; } if (lightDotNormal > Phong) { color = Specular; } gl_FragColor = vec4(color, 1.0); }