Un pixel est une collection de composants. Traditionnellement, ces composants sont rouges, verts et bleus, chacun d'eux prenant 8 bits de données.
Comme il est souvent avantageux d’aligner la mémoire de certaines manières, celles-ci sont parfois regroupées dans 32 bits d’espace chacune. Cela laisse 8 bits de données supplémentaires à la fin de chaque pixel. Comme ce n'est ni rouge, ni vert, ni bleu, il a besoin d'un nom - et alpha était un nom relativement dénué de sens.
Maintenant, lorsque vous avez un tableau de pixels disposés en rectangle, vous obtenez ceci:
RGBARGBARGBARGBA
RGBARGBARGBARGBA
RGBARGBARGBARGBA
RGBARGBARGBARGBA
Parfois, vous ne voulez parler que de l'une des couleurs ci-dessus, dites rouge:
R***R***R***R***
R***R***R***R***
R***R***R***R***
R***R***R***R***
cette sous-sélection d'un seul élément de chaque composant pixel est appelée "canal" dans l'image. Comme les pixels ont 4 composants, cette image a 4 canaux.
Il existe d'autres formats d'image où il n'y a pas de canal alpha:
RGBRGBRGBRGB
RGBRGBRGBRGB
RGBRGBRGBRGB
RGBRGBRGBRGB
et il existe des formats avec un nombre différent de bits par composante de pixel (3,5, 8, 16, 32), et certains ont des bits non uniformes par composante de pixel.
Le canal devient le tableau "virtuel" d'un seul composant pixel. (Je dis virtuel, car il y a une foulée entre chaque élément, alors que les tableaux n'ont traditionnellement pas une telle foulée)
La partie RVB n'est pas fixe non plus - vous pouvez avoir une image en niveaux de gris avec ou sans canal alpha, vous pouvez avoir une image CMJN (Cyan Magenta Yellow blacK, généralement dans un espace colorimétrique soustractif), vous pouvez avoir une image qui a un toute une myriade de canaux de couleurs différentes créés par un raytracer spéculaire ou un instrument scientifique.
Bien que j'ai traité les pixels comme s'ils étaient toujours contigus, il est également possible de diviser les canaux sur plusieurs emplacements, comme ceci:
RRRRGGGGBBBBAAAA
RRRRGGGGBBBBAAAA
RRRRGGGGBBBBAAAA
RRRRGGGGBBBBAAAA
ou même
RRRR
RRRR
RRRR
RRRR
GGGG
GGGG
GGGG
GGGG
BBBB
BBBB
BBBB
BBBB
AAAA
AAAA
AAAA
AAAA
ou ont RVB emballé et A stocké dans un tampon séparé.
Ceci est rare dans les données en direct dans les jeux, car les cartes graphiques modernes sont souvent conçues autour de pixels RGBA. Le RVB peut être géré de manière uniforme et, avec A, des calculs rapides adjacents peuvent être effectués pour permettre la composition d'un pixel RGBA au-dessus d'un arrière-plan pré-peint.
Le canal alpha est souvent utilisé pour les informations de transparence. Chose ennuyeuse, la valeur maximale d'alpha est parfois traitée comme transparente, et parfois comme opaque, par différentes bases de code. C'est encore moins courant de nos jours. Le canal alpha a également été utilisé pour l'ordre des tampons z (à quelle distance le pixel est-il de la visionneuse) pour permettre le dessin non ordonné d'une scène, et le mappage traditionnel a été fait en insérant l'image de résolution inférieure 2x 2x (ou 4x moins pixels) dans le canal alpha de l'image à plus haute résolution, récursivement.
Même dans un système qui utilise des pixels RGBA, la signification de ces pixels peut être en désaccord. Est-ce que R mesure la quantité de rouge qu'un humain voit ou combien de photons de rouge doivent être émis? Il s'agit de la différence entre les espaces colorimétriques linéaires et non linéaires, et cela a un impact sur la façon correcte de composer lesdits pixels avec un canal de transparence.