Украина, Киев |
Смешивание, туман, сглаживание, отклонение в OpenGL
Файлы к лабораторной работе Вы можете скачать здесь.
Для того, чтобы сделать отображение сцены еще более реалистичным, библиотека OpenGL предлагает еще несколько технологий, позволяющих ввести дополнительные детали:
- Смешивание (Blending) - использование альфа-компонента цвета для получения эффекта прозрачности.
- Сглаживание (Antialiasing) - подбор цвета граничных пикселов точек и линий для устранения их "зубчатости", возникающей из-за дискретности пиксельной сетки.
- Туман (Fog) - добавление эффекта, когда более удаленные от наблюдателя объекты кажутся более размытыми.
- Параметры точки (PointDistanceAttenuation) - рисование точки "налету" с цветом и размером, изменяющимися в зависимости от расстояния до наблюдателя. Эта технология применяется для ускорения рисования множеств как скопища отдельных частиц разного размера и цвета, например, снега, дождя.
- Коррекция глубины многоугольников - технология комбинированного рисования многоугольников, залитых одним цветом, с контуром другого цвета и нужной толщиной или фактурой. Поскольку закрашенные многоугольники и их контурные линии растеризуются по разному, то значения глубины, вычисленные для линий, могут не совпадать со значениями глубины для границ многоугольника даже между двумя одинаковыми вершинами. Этот нежелательный эффект визуально неприятен и напоминает стежки (stitching) на швах одежды. Он может быть устранен коррекцией глубины многоугольников.
Смешивание
Применяемая в OpenGL модель цвета RGBA подразумевает в качестве последнего параметра альфа-канал, задающий прозрачность. Значения этого параметра лежат в пределах [0, 1], где 0 - абсолютно прозрачный ( transparency ), 1 - абсолютно непрозрачный ( opacity ). Когда смешивание включено, то входящий в буфер кадра после растеризации фрагмент рисунка ( источник, Source - S ) комбинируется со значениями цвета пикселов уже хранящегося там блока пикселов ( получатель, Destination - D ). При отключенном смешивании информация источника о цвете в буфере цвета просто заменяет прежнюю информацию получателя и ни о какой прозрачности говорить не приходится.
Смешивание позволяет управлять тем, в каких пропорциях сохраненный ранее цвет должен быть объединен с новым фрагментом. С помощью альфа-компонента можно получать эффекты, когда сквозь новые фрагменты будут проступать ранее сохраненные фрагменты, которые полностью не замещаются новыми. Смешивание - основа технологии полупрозрачности, цифровой композиции и закрашивания.
Пусть, например, наблюдатель смотрит на объект через зеленое стекло. Цвет, который он увидит, будет смесью цвета стекла и цвета объекта. Ниже приведены два варианта этого примера с белым и черным фоном. Обратите внимание, что в реальной жизни черный фон вокруг объекта через зеленое стекло все равно должен быть черным, а на рисунке это не так. Но зато черный цвет увеличивает зрительный контраст цветов.
Режим смешивания включается и выключается командами
glEnable(GL_BLENDING); glDisable(GL_BLENDING);
По умолчанию режим смешивания выключен.
Во время смешивания цвета входящего фрагмента (источника) комбинируются с соответствующими текущими сохраненными значениями пикселей в два этапа по следующему алгоритму: