9.7. Технология комбинирования изображений В главе 6 были рассмотрены алгоритмы формирования изображений прозрачных объектов. Описанные в той главе методы могут применяться совместно с технологией трассировки лучей, которая сопряжена с достаточно большим объемом вычислений. OpenGL предоставляет в распоряжение прикладного программиста иной механизм формирования прозрачных объектов, позволяющий обойтись без трассировки лучей в явном виде. Этот механизм получил название альфа-смешивание (alpha-blending, или a-blending). Интенсивность альфа-канала входит в качестве четвертой компоненты в вектор цвета в формате RGBA (или RGBcc). Прикладная программа может управлять интенсивностью альфа-канала точно так же, как и интенсивностью каждого из основных цветов, т.е. задавать значение интенсивности А для каждого пикселя. Но исполняющая система OpenGL трактует это значение по-иному. Для нее заданное значение интенсивности компоненты А определяет коэффициент пересчета значений основных цветов при записи их в буфер кадра. В результате оказывается, что в код засветки пикселя вносит свой вклад несколько геометрических объектов и формируется смешанное, или комбинированное, изображение.
9.7.1. Поглощение света и смешивание изображений Коэффициент поглощения а определенной среды есть количественная мера, позволяющая оценить, какая доля светового потока, падающего на поверхность раздела сред, проходит дальше, а какая поглощается. Если коэффициент поглощения равен 1 (ос=1), то свет полностью поглощается на поверхности раздела. Поверхность, для которой коэффициент а равен О,
400 Глава 9. Операции с изображением на уровне растрового представления является идеально прозрачной - весь падающий на нее световой поток проходит дальше. Коэффициент прозрачности т (transparency) поверхности (фактически среды) связан с коэффициентом поглощения простой зависимостью т=1-а. Рассмотрим три равномерно окрашенных многоугольника, показанных на рис. 9.29. Предположим, что средний многоугольник непрозрачен, а ближайший к наблюдателю - прозрачен. Если он будет сделан из идеально прозрачного материала, то наблюдатель вообще его не увидит - он увидит только расположенные за ним непрозрачные предметы. Однако если ближайший многоугольник только частично прозрачен (часто говорят- полупрозрачен), как солнцезащитные очки, то наблюдатель увидит в этом месте некоторый совмещенный цвет, в котором присутствует и цвет полупрозрачного объекта, и цвет расположенного за ним непрозрачного. Поскольку средний многоугольник непрозрачен, то третьего многоугольника наблюдатель за ним не увидит. Если ближайший многоугольник красный, а расположенный за ним - синий, то комбинированный цвет будет иметь фиолетовый оттенок вследствие наложения (смешивания) цветов. Если же и средний многоугольник полупрозрачен, то наблюдатель увидит еще более сложное сочетание цветов всех трех объектов.