09 — Interpolation
Ce que tu vas apprendre
- L'interpolation linéaire (lerp) : la formule et ses usages
- Où l'interpolation est partout en rendu
- L'interpolation bilinéaire, pour les grilles 2D (textures)
- Pourquoi le « bilinéaire » n'est pas linéaire
Prérequis
- Savoir additionner et mettre à l'échelle des vecteurs
L'interpolation, c'est fabriquer ce qu'il y a entre deux valeurs connues. Entre le rouge et le bleu, quelle est la couleur à mi-chemin ? Entre la position de départ et d'arrivée d'un objet, où est-il à 30 % de son trajet ? Entre quatre pixels d'une texture, quelle couleur lire à un point qui tombe pile entre eux ? Toutes ces questions ont la même réponse mathématique, et c'est l'une des opérations les plus utilisées du rendu.
L'interpolation linéaire : le lerp
La brique de base est l'interpolation linéaire, le lerp (linear interpolation). Entre deux valeurs a et b, avec un paramètre t qui va de 0 à 1 :
lerp(a, b, t) = a · (1 − t) + b · t
t = 0→ on obtientat = 1→ on obtientbt = 0.5→ le milieu exact,(a + b) / 2
C'est une moyenne pondérée : t est le « curseur » qui dose le mélange. La formule marche pour des nombres, mais aussi pour des vecteurs et des couleurs (on interpole chaque composante séparément). Un dégradé de couleur, le déplacement régulier d'un objet d'un point à un autre, une valeur d'animation entre deux images-clés : tout ça, c'est du lerp.
L'interpolation est partout
Quelques endroits où elle travaille en silence :
- Animation : entre deux keyframes, les positions, rotations et échelles intermédiaires sont interpolées.
- Shading : les normales et couleurs définies aux sommets d'un triangle sont interpolées sur toute sa surface (c'est l'ombrage de Gouraud / Phong).
- Texturing : quand un texel ne tombe pas pile sur un pixel, on interpole les texels voisins — c'est le filtrage.
- Dégradés, fondus, transitions : du simple fade à l'effet visuel élaboré.
L'interpolation bilinéaire
Le lerp interpole le long d'une ligne (1D). Pour une grille 2D — typiquement une texture —, on a besoin d'interpoler dans deux directions à la fois : c'est l'interpolation bilinéaire. On part des quatre coins d'une cellule (c00, c10, c01, c11) et de deux paramètres tx, ty (la position normalisée dans la cellule).
L'astuce : on enchaîne trois lerps. D'abord deux lerps selon x, puis un lerp selon y entre les deux résultats.
a = lerp(c00, c10, tx) // bord du bas, selon x
b = lerp(c01, c11, tx) // bord du haut, selon x
résultat = lerp(a, b, ty) // entre les deux, selon y
c01 ────────── c11
| b |
| ·résultat | ty
| a |
c00 ────────── c10
tx
On peut aussi l'écrire en une seule somme pondérée, qui révèle le poids de chaque coin :
résultat = (1−tx)(1−ty)·c00 + tx(1−ty)·c10 + (1−tx)ty·c01 + tx·ty·c11
Les deux formes donnent le même résultat ; l'ordre des axes (x puis y) n'a pas d'importance mathématique, juste de lisibilité. En pratique, vérifie toujours que tx et ty restent dans [0, 1] et que tu ne sors pas de la grille — déborder est une cause classique d'artefacts.
Pourquoi « bilinéaire » n'est pas linéaire
Petit paradoxe de vocabulaire : malgré son nom, l'interpolation bilinéaire n'est pas un procédé linéaire. C'est le produit de deux fonctions linéaires. Le résultat n'est linéaire que le long des bords de la grille ; à l'intérieur, il devient quadratique (le terme tx·ty en témoigne). Concrètement, ça se voit : le filtrage bilinéaire produit des motifs en losange visibles quand on agrandit beaucoup une texture. Pour mieux, on passe à des interpolations de degré supérieur (bicubique, etc.), plus coûteuses mais plus douces.
L'article suivant assemble une bonne partie de cette série en un outil concret et très utilisé : la fonction LookAt, qui transforme un simple « la caméra est ici et regarde là » en une matrice complète.
Sources
- Scratchapixel. Interpolation (et Bilinear Interpolation). scratchapixel.com
- Pharr, M., Jakob, W., & Humphreys, G. (2023). Physically Based Rendering (4ᵉ éd.), sections sur le filtrage de textures. pbr-book.org
- Marschner, S., & Shirley, P. (2021). Fundamentals of Computer Graphics (5ᵉ éd.), chap. sur l'échantillonnage et le filtrage. CRC Press.