2010-01-21 6 views
3

J'utilise un éclairage DOT3 basé sur la texture pour réaliser un mappage de relief sur les anciens iPhones, et je me demande s'il y a une façon sournoise de le rendre correct même lorsque le point de vue change.limitations de GL_DOT3_RGB

Avec un éclairage «réel», les normales sont transformées par la matrice de vue inverse du modèle. Avec l'éclairage DOT3 basé sur la texture, il n'y a pas de transformation. Avec le mappage par bossage basé sur le shader, la carte normale est dans l'espace tangent. Avec l'éclairage DOT3, la carte normale doit être dans l'espace des yeux. C'est correct seulement si vous avez un point de vue fixe, ou si votre géométrie est un plan plat.

Dois-je accepter cela comme une autre limitation de l'éclairage DOT3? Comme il ne peut pas non plus gérer les spéculaires, je commence à me demander à quel point c'est utile.

Répondre

5

Votre carte normale ne doit pas être dans un espace particulier, tant que le vecteur de lumière est dans le même espace de coordonnées. Pour l'éclairage DOT3 sur du matériel à fonction fixe, il est probablement préférable de conserver une carte normale dans l'espace objet, plutôt que dans un espace oculaire. À partir de là, vous devez juste vous assurer que lorsque vous rendez chaque objet, vous appliquez la transformation appropriée pour déplacer votre vecteur directionnel de l'espace du monde vers l'espace objet.

+0

Merci! J'ai été accroché à faire mon éclairage dans l'espace des yeux, mais vous avez raison; Puisque ma matrice de vue-modèle est orthogonale, je peux effectuer un éclairage dans l'espace objet, me libérant ainsi de la caméra et de l'objet. – prideout