Gestion de la transparence - Alpha Blending

Publié le par Tito le mazout

La gestion de la transparence est quelque chose d'important dans le graphisme des jeux : elle permet de voir au travers de la fumée, de simuler des vitres avec différents niveaux de salissures,...


Mais qu'est ce que la transparence ?

 

On peut appréhender le principe simplement : on prend une photo, en couleur, bien sur, d'un paysage. Sur cette photo, on pose un filtre rouge : cela revient à poser un objet transparent sur la photo. Finalement on constate que poser un objet transparent revient simplement à changer la couleur de l'image d'origine : c'est exactement ce qui est fait pour gérer la transparence dans nos jeux vidéos. On va additionner les couleurs des objets qui se superposent.

 

Partant du fait que les images sont un assemblage de pixels stockés dans des tableaux mémoires, il suffit donc de recalculer la valeur affectée à chacun d'eux dès lors que l'on souhaite afficher une image avec de la transparence par dessus.

 

Je vous livre donc la formule clé, le coef de transparence étant compris entre 0 et 1 :

nouvelle couleur = (ancienne couleur * coef de transparence) + couleur superposée * (1-coef de transparence)

 

On notera que plus le coefficient de transparence est élevé, et moins la nouvelle couleur aura d'influence sur le résultat, et donc plus la transparence sera importante.

 

Compte tenu du fait que la couleur est composée de l'addition de trois couleurs de base, le rouge, le vert et le bleu, cette formule est à appliquer sur chacune d'entre elles.

 

Soit :

NC.rouge = AC.rouge * alpha + CS.rouge * (1-alpha)

NC.vert  = AC.vert  * alpha + CS.vert  * (1-alpha)

NC.bleu  = AC.bleu  * alpha + CS.bleu  * (1-alpha)

 

La seconde problématique est de savoir comment gérer, et où stocker, ce niveau de transparence, sous une forme qui restera aussi exploitable par le graphiste : celui-ci doit en effet pouvoir facilement indiquer quelle transparence est à affecter à quel pixel : c’est tout le travail de la couche alpha.  

Publié dans Programmation

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article