Images.. Qu'est ce que l'Alpha ??
Par
NN_Shane

<< Menu
<< Article précédent
Article suivant >>
Alpha, vous avez dit alpha ??

Explication du terme
Le resultat espéré
L’alpha en pratique
Les variantes
Ce qu’il faut savoir sur alpha
Mal de tete ??

1 Explication du terme :

Dans une image informatique de type RGBA les lettres RGB designent respectivement le Rouge (Red) le Vert (Green) le Bleu (Blue) d’ou RGB la A signifie lui Alpha.. ou transparence Alpha ou aussi canal Alpha..

Les cartes graphiques actuelles gerent toutes les couleurs en 32 bits parmi lesquels 24 bits servent aux composantes rouges vertes et bleues et les 8 derniers bits servent a la transparence on nomme ce canal le canal alpha..

Il s’agit comme pour les autres composantes d’un niveau d’intensite mesure de 0 (noir) a 255 (blanc)

La combinaison des differents niveaux d’intensite pour chaque canal permet de créer toutes les couleurs utilisables.
Exemple un rouge pur sera noté R255 G0 B0

Un rose fushia sera noté R255 G0 B255 ca donne un rose fushia bien flashy.. tres reposant pour les yeux J

Et bien le canal alpha s’utilise de la meme maniere suivant l’intensite marque dans ce canal pour chaque pixel de l’image, ce pixel sera plus ou moins transparent c’est a dire qu’on verra plus ou moins a travers lui ce qu’il y a derriere..

2 Le résultat espéré :

voici un petit exemple d’une texture d’herbe placee devant un bout d’image on voit bien la transparence a certains endroits de l’image de l’herbe et l’opacite a d’autres qui permet de voir les brins d’herbe justement ou de voir le tronc d’arbre a d’autres endroits, l’image en elle meme est tres moche, mais c’est juste un exemple..

pour d’autres exmples voir par exemple le cockpit du Bf110G

Dans ce cockpit pleins d’endroits utilisent de l’alpha dans ses differentes variantes..
Notamment les vitres, les lentilles du viseur mais aussi quasimment la totalite des instruments du tableau de bord et la plupart des manettes rondes..

J’expliquerais plus loin les variantes existantes..

3 L’alpha en pratique

Pour utiliser de l’alpha il faut bien sur un logiciel de dessin qui sache le prendre en compte.. Donc on se tournera naturellement vers le plus connu de tous :Photoshop

Pour créer une texture avec canal alpha prenez une texture standard preexistante soit une nouvelle page.. et allez dans la fenetre volante LAYERS il existe plusieurs onglets :
LAYERS, CHANNELS, PATHS
Cliquez sur CHANNELS vous verrez apparaître les canaux RED GREEN et BLUE


Cliquez sur l’icône en forme de page cornee en bas a droite et ca ajoutera un canal qui s’appelera ALPHA

Pour l’instant il est rempli de noir..

Vous pouvez cliquer sur un canal ou un autre afin de travailler uniquement sur cette composante de couleur donc retoucher indiferrment le canal rouge vert ou bleu ou alpha..
Sachant que chaque canal pris seul n’est qu’une luminosite.. donc apparaît noir, blanc ou plus ou moins gris..

Dessinez quelque chose dans la couche alpha..

Et suivant l’intensite de ce que vous mettez.. lorsque la texture sera utilisee par le jeu.. ou par 3dsmax elle apparaitra plus ou moins opaque ou plus ou moins transparente..

A savoir.. :

Un pixel noir est totalement transparent donc on ne verras pas la couleur RGB associee a ce pixel il laissera passer la couleur situee derriere lui ..
Un pixel blanc sera totalement opaque donc il ne laissera passer aucune autre couleur que celle situee sur les canaux RGB
Et un pixel gris laissera passer plus ou moins la couleur situee derriere suivant son intensite (suivant que le gris est plus ou moins foncé)

A savoir aussi :
C’est peut etre evident, mais une texture alpha se sauvegarde en 32 bits.. par exemple si vous sauvez du .TGA qui est le format le plus utilise pour les jeux prenez garde a bien cocher 32bits.. sinon par defaut photoshop sauve en 24bits et vous perdrez votre couche alpha

Attention en standard le .BMP ne contiens jamais de canal alpha.. sauf cas extremement rare et photoshop ne sais pas gerer les bmp 32bits

Le TIF aussi fonctionne en alpha..
Le JPG ne le gere pas..

Avec photoshop vous pouvez visualiser chaque couche independamment des autres, ou les superposer, donc on peut voir une couche alpha seule.. ci dessous la texture d’herbe et plus bas sa couche alpha..
Sur cette texture il y a bcp de pixels noirs dont totalement transparents, et aucuns pixels blancs donc aucuns pixels ne sont totalement opaques..
Cette herbe est faite pour qu’on voit toujours un peu au travers..

Dans le cas de vitres du bf110 elles sont quasi transparentes sur toute leur surface sauf dans les angles ou il y a des zones quasi opaques afin de simuler la crasse qui s’accumule..

On eut aussi gerer l’alpha en ne jouant que sur le blanc et le noir.. c’est le cas sur la plupart des instruments du tableau de bord du bf110 tout l’instrument est opaque et la partie autour est entierement transparente afin de le detourer

Cette variante s’appele NON ZERO et est en general moins gourmande en temps de calculs pour une carte graphique donc c’est a privilegier autant que possible..

L’horizon artificiel lui est compose d’un cylindre de couleur grise uniforme et tout l’aspect rond se fait par la transparence alpha qui est en degrade plus ou moins fonce autour.. pour voir.. regardez de pres celui du fw190 dans forgotten battle vous verrez comme ca rend bien..


4 Les variantes :

Comme dit plus haut l’alpha peut avoir des variantes sous differentes formes..

Afin de gagner en fluidite certains moteurs de jeu utilisent de textures 16 bits au lieu de textures 32bits.. dans ce cas la..
Les bits peuvent etre repartis de differentes manieres :

Par RGBA je parlerais toujours de Rouge Vert Bleu Alpha pour les explications suivantes
Et les nombres situes derriere decrirons le nombre de bits alloues a chaque canal..
Exemple : en texture 32bits on parle de R8 G8 B8 A8 ou plutot de RGBA 8888

Pour rappel en informatique 8bits permettent 256 niveaux d’intensite soit :2puissance8=256 valeurs comprises entre 0 et 255

Donc du RGBA 4444 sera la meme chose que du RGBA 8888 mais avec bcp moins de nuances de couleurs.. avec 4 bits on a droit a seulement 16 nuances (0 a 15) 2 puissance 4=16

Le total ne faisant plus que 4+4+4+4bits soit 16 bits au lieu de 8+8+8+8=32bits

On peut faire varier par exemple :RGBA 5551 sera du RGBA avec 32 nuances d’intensites par composante de couleur et 1 seul bit dedie a l’alpha.. soit NOIR ET BLANC seulement..
Donc en utilisant du RGBA 5551 ont peut faire du NON ZERO tout en gardant des nuances de couleurs plus fines..
Ca deviens un peu complexe ?? J

Alors que diriez vous de savoir qu’il est possible aussi de faire de la transparence avec une texture palettisee

Par texture palettise je me rapporte aux modes graphiques un peu plus anciens dans lequels au lieu d’avoir une couleur RGB ou RGBA pour chaque pixel de l’image on avait juste un index compris entre 0 et 255 pour chaque pixel soit 256 couleurs possibles soit 8 bits par pixel mais chauqe pixel n’avais pas sa couleur decrite individuellement par rapport aux autres comme pour les modes actuels..
Ce numero attribue a chaque pixel faisait en fait reference a une table de couleur ou on decrivait la teinte en RGB de chacuns des 256 indexs choisis.. c’est la palette justement dont on parle la..
Je ne sais pas si je me fais bien comprendre la.. il faudras que je fasse un schema.. mais sachez que photoshop permet aussi de travailler en mode palettisé.. et surtout que ce mode la a l’enorme avantage de consomme encore 2 fois moins de place memoire que le mode 16 bits..
D’ou exemple :
Prenez une image 256*256 pixels comme le sont les textures de Forgotten Battle.
En 32 bits elle consomme :256*256*4=262144 octets soit 256Ko environ
Le *4 est la car 32bits =4 octets..

En 16 bits cette meme image prendrais :256*256*2=131072 octets soit 128Ko
Et en mode palettisé elle prendrais 256*256*1=65536 octets soit 64Ko

Je pense que vous comprenez mieux que sur console comme la PS2 qui n’a que peu de memoire on utilise quasimment que des textures palettisees..


Pour en revenir a l’alpha.. quand on fait de la transparence avec une texture palettisée, on decide d’avance que telle ou tel index de couleur (l’une des 256 choisies) sera transparente, tres souvent on choisi un fushia pur (255 0 255) afin de bien la voir..
Une fois dans le jeu naturellement on ne la verra plus vu que ces pixels violet seront transparent J

5 Choses a savoir sur l’alpha

Une derniere chose a savoir sur les textures alpha.. elles ont un gros defaut :

Une texture alpha est toujours plus couteuse a traiter par une carte graphique qu’une texture qui ne l’est pas car les polygones ayant une texture alpha doivent etre triés.. c’est a dire que lors de l’affichage le GPU ou VPU de la carte graphique (le processeur) peut afficher des polygones dans n’importe quel ordre.. il existe une fonction integree qui s’appele :Z BUFFER qui se charge de savoir quels sont les pixels visibles ou non sur une image.. quand 2 polygones se recouvrent a l’affichage (2 avions l’un devant l’autre par exemple)
Mais quand il y a de la transparence comme les 2 doivent etre affiches malgre qu’ils soient l’un devant l’autre.. le GPU doit determiner lequel est plus proche ou plus eloigne que l’autre de la camera.. donc il doit trier tous les polygones textures avec de l’alpha.. sinon ca cree des bugs d’affichage.. comme une vitre qui n’est pas transparente ou un objet qui devrais etre vu a travers une vitre qui n’apparaît pas mais il apparaît du vide a la place..
Et plus y’en as plus le temps de tri augmente.. donc les programmeurs font la tete quand on en met trop.

Les textures NON ZERO sont moins compliquees a traiter que les textures purement alpha.. donc privilegier le noir et le blanc dans al couche alpha.. les gris intermediaires ne doivent etre utilises qu’en cas de besoin absolu comme par exemple pour des vitres..

6 Mal de tete ??

Si le sujet vous interesse, n’hesitez pas a m’ecrire afin d’avoir plus d’explications ou des schemas…. Je suis loin de connaître tout sur le sujet.. mais ayant fait de la programmation pendant 8 ans sur Atari ST, et etant infographiste maintenant, je travaille constamment avec ces notions..

Difficile parfois de retourner sur terre et d’arriver a expliquer des concepts qu’on utilise depuis un bout de temps.. a des personnes qui n’ont jamais abordé le sujet…

J’espere ne pas avoir causé de migraines J

Et bon courage a tous dans le monde merveilleux de la creation informatique..

NN_Shane

.Michel.

ps:mon email: shane@france-simulation.com ou shane@free.fr