Hello.
J'essaye de faire du parallax mapping mais ça ne semble fonctionner que quand la caméra est dans certaine position ! pourquoi ?
Si je définit ma caméra comme ceci :
gluLookAt(eye.x, eye.y, eye.z, dir.x, dir.y, dir.z, top.x, top.y, top.z);
est-ce que le vecteur de vue que je doit envoyer à mon fragment shader est-il égal à normalize(dir-eye) ?
Voici le code du vertex shader:Et le code du fragment shader :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void main() { gl_TexCoord[0] = gl_MultiTexCoord0; gl_Position = ftransform(); }Edit : Est-ce que le "parallax mapping" et le "parallax occlusion mapping" sont la même chose ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 uniform sampler2D diffuseTexture; //diffuse texture uniform sampler2D heightMap; //height map uniform vec3 viewVector; //dir-eye void main() { float height = texture2D(heightMap, gl_TexCoord[0].st).r; float displacement = (height * 0.04) - 0.02; vec2 newTexCoord = vec2((normalize(viewVector) * displacement)) + gl_TexCoord[0].st; gl_FragColor = texture2D(diffuseTexture, newTexCoord); }
merci
Partager