Bonsoir amis codeurs!

Toujours sur ma découverte de WebGL, je suis en train d'implémenter un petit bump mapping.
Pour m'aider, j'ai sous la main le tuto de chez oZone3D et le shader "ParalaxBumpMapping" du logiciel Shader Designer.

Voici un aperçu de ce que j'obtiens :

http://www.youtube.com/watch?v=-B9XRvGADMw


On peut voir (sur les trous du dés par exemple) que la lumière (fixe) n'a pas l'air d'être calculée de la même manière sur toutes mes faces lors de la rotation du dés.

Est-il possible que cet effet vienne du calcul de mon espace tangent?

Mes normales sont correctes (données par mon logiciel de modélisation), mais j'ai peur que mon calcul de tangentes soit inexacte.

En effet, d'après le tuto de chez oZone, on apprend qu'il est possible d'en avoir une approximation en faisant de la manière suivante :

vec3 tangent;
vec3 binormal;

vec3 c1 = cross(gl_Normal, vec3(0.0, 0.0, 1.0));
vec3 c2 = cross(gl_Normal, vec3(0.0, 1.0, 0.0));

if(length(c1)>length(c2))
{
tangent = c1;
}
else
{
tangent = c2;
}

tangent = normalize(tangent);
J'imagine que je suis un peu trop feignant et qu'il vaudrait mieux que je calcule ma tangente en fonction des trois vertices de chaque face?
Pour info, avec cette méthode, voilà ce que j'obtiens pour mon dés :

Normale : 0,-1,0 / Tangente : [-1,0,0] / Binormale : [0,0,-1]
Normale : 0,-1,0 / Tangente : [-1,0,0] / Binormale : [0,0,-1]
Normale : 0,-1,0 / Tangente : [-1,0,0] / Binormale : [0,0,-1]
Normale : 0,-1,0 / Tangente : [-1,0,0] / Binormale : [0,0,-1]
Normale : 0,1,0 / Tangente : [1,0,0] / Binormale : [0,0,-1]
Normale : 0,1,0 / Tangente : [1,0,0] / Binormale : [0,0,-1]
Normale : 0,1,0 / Tangente : [1,0,0] / Binormale : [0,0,-1]
Normale : 0,1,0 / Tangente : [1,0,0] / Binormale : [0,0,-1]
Normale : 0,0,1 / Tangente : [0,1,0] / Binormale : [-1,0,0]
Normale : 0,0,1 / Tangente : [0,1,0] / Binormale : [-1,0,0]
Normale : 0,0,1 / Tangente : [0,1,0] / Binormale : [-1,0,0]
Normale : 0,0,1 / Tangente : [0,1,0] / Binormale : [-1,0,0]
Normale : 1,0,0 / Tangente : [0,0,1] / Binormale : [0,-1,0]
Normale : 1,0,0 / Tangente : [0,0,1] / Binormale : [0,-1,0]
Normale : 1,0,0 / Tangente : [0,0,1] / Binormale : [0,-1,0]
Normale : 1,0,0 / Tangente : [0,0,1] / Binormale : [0,-1,0]
Normale : 0,0,-1 / Tangente : [0,-1,0] / Binormale : [-1,0,0]
Normale : 0,0,-1 / Tangente : [0,-1,0] / Binormale : [-1,0,0]
Normale : 0,0,-1 / Tangente : [0,-1,0] / Binormale : [-1,0,0]
Normale : 0,0,-1 / Tangente : [0,-1,0] / Binormale : [-1,0,0]
Normale : -1,0,0 / Tangente : [0,0,-1] / Binormale : [0,-1,0]
Normale : -1,0,0 / Tangente : [0,0,-1] / Binormale : [0,-1,0]
Normale : -1,0,0 / Tangente : [0,0,-1] / Binormale : [0,-1,0]
Normale : -1,0,0 / Tangente : [0,0,-1] / Binormale : [0,-1,0]