Bonjour,
je cafouille un peu avec le vertex shader, avant dans mon fragment shader j'utilisais gl_FragCoord pour la coordonnée du fragment mais on m'a dis que cela concernait la coordonnée à l'écran et pas la coordonnée de l'oeuil j'ai donc créé une varying variable dans mon vertex shader qui reçoit la position du vertex, c'est depuis que je fais ça que j'ai un écran noir...

PS : avec renderMonkey par défaut dans le vertex shader j'ai
gl_Position = ftransform();
le problem viendrait il de là ?

voici mon code (vertex puis fragment shader):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
varying vec3 normal ;
varying vec4 coordinate ;
 
void main(void)
{
   normal=gl_Normal ;
   coordinate = gl_ModelViewMatrix * gl_Vertex;
   gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex ; //ftransform();
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
29
30
31
32
33
34
35
36
37
38
varying vec3 normal ;
varying vec4 coordinate ;//coordinate of the fragment
 
void main(void)
{
 
//ambient component
   vec4 lightVector = vec4(gl_LightSource[0].position - coordinate) ;
 
   vec4 ambientLight = gl_FrontMaterial.ambient * gl_LightSource[0].ambient ;
 
//diffuse component
   //lightVector = normalize(lightVector) ;
   float intensity = max(dot (normal, lightVector.xyz), 0.0);
   vec4 diffuseLight = gl_FrontMaterial.diffuse * gl_LightSource[0].diffuse * intensity ;
 
//specular component
 
   //lightVector = normalize(lightVector) ;
 
   vec4 eyeVector = vec4(gl_ModelViewMatrixInverse[3][0] - coordinate.x,
                         gl_ModelViewMatrixInverse[3][1] - coordinate.y,
                         gl_ModelViewMatrixInverse[3][2] - coordinate.z, 0.0);
 
   //eyeVector.xyz = normalize(eyeVector.xyz);
   vec3 eyePlusLight = normalize(eyeVector.xyz + lightVector.xyz) ;
 
      vec4 specularLight=gl_FrontMaterial.specular * /*red*/gl_LightSource[0].specular  *pow(max(dot(eyePlusLight, normal), 0.0), gl_FrontMaterial.shininess);
 
 
//attenuation  
   float attenuation = 1.0/(gl_LightSource[0].constantAttenuation + 
      gl_LightSource[0].linearAttenuation*distance(gl_LightSource[0].position, coordinate)
       + pow(distance(gl_LightSource[0].position, coordinate), 2.0)) ; 
 
   gl_FragColor = gl_FrontMaterial.emission + (ambientLight + diffuseLight + specularLight)*attenuation ; 
 
}