Hello,

J'essaye de faire du parallax mapping mais je n'y arrive pas
Je m'inspire beaucoup de code déjà fait qui sont quasi tous presque identique mais chez moi ça ne fonctionne pas. Mon code ne fonctionne que si la caméra est dans un direction bien précise.

Vertex shader:
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
varying vec3 eyeDir;
varying vec2 texCoord;
 
attribute vec3 tangent;
 
void main()
{
	//local space
	vec3 n = normalize(gl_NormalMatrix * gl_Normal);
	vec3 t = normalize(gl_NormalMatrix * tangent);
	vec3 b = cross(n, t);
 
	vec3 tmpEyeDir = -vec3(gl_ModelViewMatrix * gl_Vertex);
 
	eyeDir.x = dot(tmpEyeDir, t);
	eyeDir.y = dot(tmpEyeDir, b);
	eyeDir.z = dot(tmpEyeDir, n);
 
	texCoord= gl_MultiTexCoord0.xy;
	gl_Position = ftransform();
}
Fragment shader
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
varying vec3 eyeDir;
varying vec2 texCoord;
 
uniform sampler2D diffuseTexture;	//diffuse texture
uniform sampler2D heightMap;		//height map (bump)
 
void main()
{
	vec3 eyeDirNorm = normalize(eyeDir);
 
	float height = texture2D(heightMap, texCoord).r * 0.04 - 0.02;
	vec2 newTexCoord = texCoord + (height * (-eyeDirNorm.xy));
 
	gl_FragColor = texture2D(diffuseTexture, newTexCoord);
}
Merci d'avance...