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:
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
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(); }
Merci d'avance...
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); }
Partager