Interpolation automatique du fragment shader

Vous avez remarqué qu’avec seulement une couleur par vertex, nous obtenons un triangle dégradé de couleurs. Nous n’avons pas besoin de spécifier toute les couleurs, car nous exploitons une fonctionnalité de la pipeline de rendu.

Les attributs de sommets sont automatiquement interpolés à travers les framents.

Après l’assemblage de la géométrie, le rasterizer génère plusieurs fragments. Si le fragment shader qui suit a des déclarations in, il va recevoir une valeur interpolée d’un attribut.

Ceci sera très pratique pour d’autres attributs tels que les vecteurs normaux aux faces de la géométrie et les coordonnées de textures. Considérant que nous ne connaissons pas le nombre de fragments qui seront coloré par forme (par exemple, si l’objet est proche ou éloigné de la caméra), cette interpolation est nécessaire. Nous ne pouvons pas associer une couleur par fragment potentiel à priori, par exemple.

L’interpolation est réalisé par une moyenne pondéré de trois valeurs de l’attribut en question.

Par exemple, trois sommets qui forment un triangle : Chaque sommet a une couleur associée. Supposons rouge, vert, et bleu. Au centre du triangle, nous retrouvons une couleur d’une combinaison \[\frac{1}{3}Rouge + \frac{1}{3}Vert + \frac{1}{3}Bleu\]

Pour interpoler entre trois vecteurs (chaque couleur est un vecteur), nous utilisons des coordonnées barycentriques.

Nous formons une base vectorielle non orthogonale et échantillonnons dans cet nouvelle base. Considérant que nous ne voulons pas échantillonner à partir de l’origine, nous faisons une transformation affine (translation de a dans l’image). La somme de \(\alpha, \beta, \gamma\) doit être \(1\) : c’est une moyenne pondérée sur \(100\%\).