М. Ву, Т. Девис, Дж. Нейдер, Д. Шрайнер - OpenGL. Руководство по программированию (Библиотека программиста) (2006) (1124363), страница 44
Текст из файла (страница 44)
Вмрсии 1.3 поддержка мультнвыборки стала частью ядра ОрепОЦ 200 Глава 6 ° Смешивание, сглаживание, туман и отклонение В версии 1.4 также были добавлены следующие возможности, затрагиваемые в данной главе: ° использование 6С 5РС СОСОР и 61 ОМЕ М1МР5 5РС СОСОР в качестве факторов смешивания для источника (до версии 1.4 6С 5йС СОСОР и 6С ОМЕ М1М05 5РС СОСОР были факторами смешивания для получателя); ° использование 6С Р5Т СОСОР и 6С ОМЕ М1М05 Р5Т СОСОР как типов смешивания для получателя (до версии 1.4 6С Р5Т СОСОР и 6С ОМЕ М1МО5 Р5Т СОьОР были факторами смешивания для источника); ° явное определение координат тумана; ° параметры точки для управления характеристиками точечных примитивов; ° возможность смешивания КСВ-компонентов и альфа-канала цвета раздельными функциями смешивания.
Смешивание Что же такое «альфа»? Мы неоднократно употребляли этот термин (или как букву А в аббревиатуре КСВА), но до сих пор не конкретизировали. Альфа-значения указывались для функции к1Со1ог» (), задавались в функции к161еагСо1ог () для определения цвета очистки и использовались при задании некоторых параметров освещения, таких как свойства материала и интенсивность света источника. В главе 4 говорилось, что пиксел на экране монитора излучает красный, зеленый и синий света, и интенсивность света складывается из значений красной, зеленой и синей составляющих — КСВ. Так каким же образом альфа-значение (А) влияет на рисование в окне на экране? Когда включено смешивание, значение альфа-компонента часто используется для комбинирования значения цвета обрабатываемого фрагмента со значением цвета пиксела, которое уже хранится в буфере кадров.
Смешивание происходит после растсризации сцены и разбивки ее на фрагменты, но до того, как конечные пикселы сохраняются в видеобуфере. Значения альфа-компонента также играют свою роль при выполнении альфа-теста, принимающего или отбраковывагощего фрагмент на основе его альфа-значений. (См. главу 10 для получения дополнительной информации.) В отсутствие смешивания информация о цвете в буфере цвета перезаписывается, и ни о какой прозрачности говорить не приходится. Смешивание позволяет управлять тем, как (и в каком соотношении) сохраненный цвет должен быть объединен со значением цвета нового фрагмента. И, соответственно, с помощью альфа-компонента можно получить светопроницаемые фрагменты, через которые будет «проступать» ранее сохраненный цвет. Смешивание цвета — основа технологии полупрозрачности, ццфровой композиции и закрашивания. ПРИМЕЧАНИЕ Альфа-значения не определяются в режиме индексации цвета, то есть операции смешивания в этом режиме ие выполняются.
Смешивание 201 Вавболее естественный способ понять смешивание — думать об КСВ-компоненфрагмента как о цвете, а альфа-составляющую считать показателем непрозрачи (орас11у). Прозрачные или светопроницаемые поверхности имеют меньшую еврозрачность, чем непрозрачные, и, соответственно, меньшие значения альфаавляющей.
Например, если вы смотрите на объект через зеленое стекло, цвет, рый вы увидите, будет частично зеленым от стекла, а частично — цветом объПроцентное соотношение зависит от пропускной способности стекла: если кло пропускает 80% света, который на него падает (то есть непрозрачно на 20%), т цвет будет содержать 20% цвета стекла и 80% цвета обьекта за ним. Легко ставить ситуацию с несколькими прозрачными поверхностями. Так, линия гляда до некоторой точки в салоне автомобиля проходит через одно стекло, а при дяде сквозь автомобиль объекты видны через два стекла. Вкторы влияния источника и получателя время смешивания цвета входящего фрагмента (источника) комбинируются пютветствуюшими текущими сохраненными значениями пиксслов (получите- ) в два этапа.
Сначала вы указываете, как вычисляются факторы влияния ночника и получателя. Эти коэффициенты представляют собой четверки значе, которые умножаются на каждую составляющую В, б, В и А источника и учателя соответственно. Затем компоненты двух наборов ВСВА попарно объвяются. Для того, чтобы показать это математически, представим коэффицисмешивания в виде (8„, 8» Вм 8„.) и (Р„, Р„, 1)м Р.„) соответственно, а значе- кбВА для источника и получателя пусть обозначаются подстрочными волами з и г[. Наконец, вычисляются смешанные значения РСВА: (8,8, + В«Р, С Б» + б«Р„, В,Бь «В«Рм А.'Я' .ь А«Р.).
последнее, что делается, — это каждая составляющая четверки ограничивается звоном [О, 1]. умолчанию обьединение фрагментов источника и получателя происходит пусложения их значений (С,З -» С„Р). См. раздел «Объединение пикселов на ове выражений», где описан выбор нужной математической операции. два способа задания коэффициентов смешивания источника и получателя.
вый: функция 8181еппГопс (), которая определяет два коэффициента смеши— для источника и для получателя. Второй; функция 81В1евоГиос5ерагате(), расчете на четыре коэффициента, чтобы использовать для альфа-значений кцию смешивания, отличную от функции для ВСВ-компонентов. ' гоЫ 8181епоЕопс(С1.епшп згсуастог, б).епшп вш(/асгог); Управляет смешиванием значений цветов обрабатываемого фрагмента (источник) и фрагмента, уже сохраненного в видеобуфере (получатель).
Значения аргументов приведены в табл. 6.1. Аргумент згс)асгог определяет способ вычисле' ввя фактора смешивания источника, а параметр ьГшт1астог — получателя. Коэффициенты смешивания лежат в пределах [О, 1[. Значения, полученные в результате объединения цветов источника и получателя, также попадают в пределы [О, 1[. 202 Глава б ° Смешивание, сглаживание, туман и отклонение уо!с( В101епбрцпс5ерагасе(01.епшп згсЯСВ, С1.епшп ьуезГВСВ, 01епшп згса1рЬа, 01.епшп г(езга(р)ьа) Так же, как и функция В1В1епорцпсС, функция В101епПЕцпс5ерагате() управляет смешиванием цветов источника (фрагмента) и получателя (буферз кадров); и аргументы принимают те же значения (табл.
6.1). Аргумент зьсЯСВ задает коэффициент смешивания источника для значений цвета, с(езгВСВ— коэффициент смешивания получателя, тоже для цвета. Аргументы зьса1рйа и с(еша1р)ьа определяют коэффициенты смешивания для значений альфа-компонента источника и получателя соответственно. Коэффициенты смешивания не выходят за диапазон [О, 1]. Значения, полученные в результате объединения значений цветов источника и получателя, также лежат в пределах [О, 1].
ПРИМЕЧАНИЕ В табл. 6.1 значения йбВА источника, получателя н цветовых констант обозначены индексами», Е и с соответственно, Разность четверок означает рвзноаь их охтввляющих. Значение 6С 5КС АЕРНА 5АТ0йАТЕ может использоваться толыа как коэффициент смешивания для источника Таблица 6.1. Коэффициенты смешивания источника и получателя Константа Коэффициент смешивания йбВ Коэффициент смешивания альфа-компонентов А5 1 — А» Аь 1- Аь А5 А» Аь Ас 1-Ас Ас 1 — А, Использование одной из функций смешивания 6(ьСОМ5ТАМТь подразумевает предшествующий вызов функции В101еппбо1ог(). уо»ь) В1В1епобо1ог(01.с!ашр1гес(, СЕс!а»пр1уеел, 01с!ашр1 Ыие, С1.с!шпр1а)рйа); Устанавливает значения аргументов гес(, ягеел, Ыие и а!рва в качестве состав- ляющих цветовой константы (В,, ф„А,,), используемой в операциях сме- шивания.
61 ЕЕКО 61 ОМЕ 61 5КС СОСОК 61 ОМЕ М1й05 5КС СОООК 6С 05Т СОЕОй 6С ОМЕ М1М05 05Т СОСОК 6С 5КС КЕРНА 6( ОМЕ Н1й05 5КС АСРНА 6С 05Т АЕРНА 6С ОМЕ МХМ05 05Т АСРНА 6( СОй5ТАМТ СОСОК 61 ОМЕ М1М05 СОМ5ТАМТ СОСОК 61 СОй5ТАМТ АСРНА 61 ОМЕ М!М05 СОй5ТАМТ АСРНА 61 5КС АЕРНА 5АТОКАТЕ (О, О, О) (1, 1, 1) (Й, 6„В,) (1, 1, 1) — (К„б„В,) (йф б, вВ (1, 1, 1) - (йь, бь, Вь) (А„А„А,) (1, 1, 1) — (А„А„А,) (Аь, Аь, Аь) (1 1, 1) — (Аь Аь Аь) (Кс, 6„В,) (1, 1, 1) — (К„6„8,) (А„А„А,) (1, 1, 1) — (А А„А,) (Еб();Е пбп(А„1 — А ) Смешивание 203 3((лючение смешивания Вне зависимости от того, как определяется функция смешивания, чтобы она ра- Пвтала, следует включить режим смешивания; П!Епаще(61 ВСЕМВ); Отключается данный режим вызовом В10тза01е со значением аргумента 61 В(ЕМ0, Заметьте, что использование констант 6С ОМЕ (для источника) и 61 ЕЕРО (Аля получателя) дает тот же результат, что и отключение смешивания; зти зна- тения приняты по умолчанию.
Объединение пикселов на основе выражений Обычно при смешивании цвета в видеобуфере складываются с цветами обраба- тываемого фрагмента и так получается новый цвет. Но вы можете использовать функцию В1В1епбЕццаттоп() для активации иной математической операции— внчитания, подмены на минимальное или максимальное значение и др. уо1с( В1В1епбЕоцатзоп(С(епшп тосте); Задает, как смешиваются цвета буфера кадров и источника. Аргумент пюс(е вы- бирается из списка: 61 ЕОМС АОО (по умолчанию), 6С ЕОМС 5ОВТРАСТ, 6С ЕОМС РЕЧЕР5Е 5ОВТРАСТ, 61 М1М и 61 МАХ.
Доступные режимы описаны в табл. 6.2. В табл. 6.2 буквы С, и С„обозначают цвета источника и получателя; индексы Я В Р вЂ” зто факторы влияния источника и получателя, определенные с помощью фУнкций В1В1епбрцпс() и В101епбГипсберагате(). 1абпмца 6.2. Математические выражения для смешивания Операция Параметр йистинг 6.1 демонстрирует практическое применение различных выражений сцешивапия.
Тип смешивания выбирается клавишами а, 5, г, ш и х. В качестве иствчника используется синий квадрат, а получателем является желтый фон. Коэффициенты смешивания для каждого цвета устанавливаются в 61 ОМЕ посредстюм П1В1епб ропе (). Пвстииг 6.2. Использование выражений смешивания: Ыепбецп.с Л Клавиши. нсполязуемые дпя замены выраження смешивания 'а' -> 6С ЕОМС А00 'я' -> 6С КОМС 5ОВТРАСТ 'г' -> 6С ЕОМС РЕНЕР5Е 5ОВТРАСТ лродолжвнив в> й ГОИС АОО б( ГОИС 5ОВТРАСТ б(ЕОМС РЕЧЕР5Е 5ОВТРАСТ б( М1И б( МАХ С,5 ы Сав С,5 - Ся0 Сяо — С„5 лл'п(С,5, Ся0) я|ах(С,5, Ся0) 204 Глава 6 ° Смешивание, сглаживание, туман и отклонение Листинг 6.1 (продолжение) 'и' -> 61 Н?М 'х' -> 61 НАХ ° / чо(б (п(1(чо!б) ( 91С\еагСо1ог(1.8, 1.8, 0.9, 9.0); 8191епбтцпс(6С ОМЕ, 61 ОМЕ); 91Епао?е(61 ВСЕМО); ) чо)б б!зр?ау(чо!б) ( 91С?еаг(61 СОСОК ВЦРРЕК 81Т); В?со?огЗт(8.8.