Пиксель - это набор компонентов. Традиционно эти компоненты - красный, зеленый и синий, каждый из которых занимает 8 бит данных.
Поскольку часто бывает выгодно выровнять память определенным образом, они иногда упаковываются в 32-битное пространство каждый. Это оставляет 8 бит дополнительных данных в конце каждого пикселя. Поскольку это ни красный, ни зеленый, ни синий, ему нужно имя, а альфа была относительно бессмысленным именем.
Теперь, когда у вас есть массив пикселей, расположенных в прямоугольнике, вы получите это:
RGBARGBARGBARGBA
RGBARGBARGBARGBA
RGBARGBARGBARGBA
RGBARGBARGBARGBA
иногда вы хотите говорить только об одном из цветов выше, скажем, красный:
R***R***R***R***
R***R***R***R***
R***R***R***R***
R***R***R***R***
этот подвыбор только одного элемента каждого пиксельного компонента называется «каналом» в изображении. Поскольку пиксели имеют 4 компонента, это изображение имеет 4 канала.
Есть другие форматы изображений, где нет альфа-канала:
RGBRGBRGBRGB
RGBRGBRGBRGB
RGBRGBRGBRGB
RGBRGBRGBRGB
и существуют форматы с различным количеством битов на компонент пикселя (3,5,8,16,32), а некоторые имеют неоднородные биты на компонент пикселя.
Канал становится «виртуальным» массивом только одного пиксельного компонента. (Я говорю виртуальный, потому что между каждым элементом есть шаг, в то время как массивы традиционно не имеют такого шага)
Часть RGB также не является фиксированной - у вас может быть изображение в оттенках серого с альфа-каналом или без него, у вас может быть изображение CMYK (Cyan Magenta Yellow blacK, обычно в субтрактивном цветовом пространстве), у вас может быть изображение, которое имеет целое множество различных цветовых каналов, созданных зеркальным следом луча или научным инструментом.
Хотя я рассматривал пиксели так, как будто они всегда смежные, возможно также разделить каналы на несколько мест, например так:
RRRRGGGGBBBBAAAA
RRRRGGGGBBBBAAAA
RRRRGGGGBBBBAAAA
RRRRGGGGBBBBAAAA
или даже
RRRR
RRRR
RRRR
RRRR
GGGG
GGGG
GGGG
GGGG
BBBB
BBBB
BBBB
BBBB
AAAA
AAAA
AAAA
AAAA
или RGB упакован и A хранится в отдельном буфере.
Это редко встречается в живых данных в играх, потому что современные видеокарты часто имеют пиксели RGBA. RGB может обрабатываться равномерно, и с помощью A можно выполнять быстрые вычисления, которые позволяют создавать пиксели RGBA поверх предварительно окрашенного фона.
Альфа-канал часто используется для прозрачности информации. Раздражает, что максимальное значение альфа иногда рассматривается как прозрачный, а иногда как непрозрачный, различными базами кода. Это снова менее распространено в наши дни. Альфа-канал также использовался для упорядочения z-буфера (как далеко пиксель от зрителя), чтобы позволить неупорядоченное рисование к сцене, и традиционно mip-отображение выполнялось путем помещения изображения с более низким разрешением в 2x 2x (или в 4 раза меньше пикселя) в альфа-канал изображения с более высоким разрешением, рекурсивно.
Даже в системе, использующей пиксели RGBA, значение этих пикселей может не совпадать. Измеряет ли R количество красного, которое видит человек, или сколько фотонов красного должно быть испущено? В этом разница между линейным и нелинейным цветовыми пространствами, и она влияет на правильный способ объединения указанных пикселей с каналом прозрачности.