tu as ton triangle, avec une paire de coordonnées U,V par sommet (vertex)
en ignorant l'aspect 3D (mise en persperspective et correction de perspective)
tu traces ton triangle de haut en bas, par ligne horizontale. (deux cas: le sommet "millieu" est à gauche ou à droite de la droite qui rejoint le sommet "haut" et "bas" ).
tu "tries" tes points:
le plus haut: point 1
le plus bas: point 3
celui qui est au milieu: point 2
pour chaque segments, tu calcules tes pentes (pour avoir le x gauche et droit de chaque segment horizontal)
symétriquement, tu fais tes pentes U & V / delta Y de chaque segment, pour faire progresser tes coordonnées U,V dans la texture à échantillonner.
du coup tu as un couple U,V pour chaque coté gauche/droit de la ligne horizontale à traçer. tu refais un gradient (en fait y'a des raccourcis maths pour le faire une fois pour toute je crois) par ligne horizontale.
tu traçes ta ligne horizontale en faisant progresser ton couple U,V, et tu échantillonne dans la texture et voilà.
après:
- a toi de trouver comment ne pas te faire piéger avec des y2==y3, autres cas tordus, et faire un clipping qui marche.
ensuite, tout ce que je t'ai dit est faux sur l'interpolation U,V, car dû à la projection tout est proportionnel à 1/Z, il faut donc interpoler 1/Z, U/Z, V/Z, le long du triangle (et déterminer par pixel Z, et donc U & V corrigés) pour avoir un effet de perspective visuellement correct.
Message édité par bjone le 08-05-2007 à 13:15:50