le .frag
et le .vertCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 varying vec3 lightDir,normal,vectVue; uniform sampler2DShadow depthbuffer; varying vec4 proj_shadow; void main() { vec4 color; vec3 N=normalize(normal); vec3 L=normalize(lightDir); vec3 V=normalize(vectVue); float lambertTerm = max( dot(N,L), 0.0); if(lambertTerm > 0.0)//0.2 si pas shadow { color = gl_Color *lambertTerm *shadow2DProj(depthbuffer, proj_shadow).r; vec3 R = reflect(-L, N); float specular = pow( max(dot(R, V), 0.0),128.0 ); color +=specular ; } //else//si pas shadow // color = gl_Color / 5; gl_FragColor = color ; }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 varying vec3 lightDir,normal,vectVue; varying vec4 proj_shadow; void main() { // coordonnées de la direction de la lumière données dans le repère de la caméra lightDir=vec3(gl_LightSource[0].position);//-vec3(gl_ModelViewMatrix*gl_Vertex); // passage des coordonées de la normale du repère de la scène vers de repère de la caméra normal=normalize(gl_NormalMatrix*gl_Normal); // coordonées du vecteur VertexCamera dans le repère de la caméra vectVue=-vec3(gl_ModelViewMatrix*gl_Vertex); gl_Position=ftransform(); proj_shadow = gl_TextureMatrix[1] * gl_Vertex;//gl_TextureMatrix[0] * gl_TextureMatrixInverse[1] * gl_ModelViewMatrix * gl_Vertex; gl_FrontColor = gl_Color; }