OpenGL. Руководство по программированию (Библиотека программиста) (2006). Ву М., Девис Т., Нейдер Дж., Шрайнер Д (1124475), страница 44
Текст из файла (страница 44)
Смешивание 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.
9.9, 1.9); 91йестт(-9.5, -8.5, 9.5, 0.5); 81Р?цзп (); чотб КеуЬоагб(цпзтвпеб спаг Кеу, !пт х, )пт у) ( зн!Ссп (Кеу) ( саве 'а': сазе 'А': /" Цвета складываются: (1,1,9) + (9,0,1) = (1,1,1). ' В результате получается белый квадрат на желтом фоне '/ 9181епббцоат)оп(6с РЦМС АОО): Ьгеах; саяе 'з': сазе '5': /" Цвета вычитаются: (0,0,1) — (1,1,8) = (-1,-1,1) * После ограничения к (О, 8, 1) получается синий квадрат ' на желтом фоне '/ В?в?епбеццат!оп(61 Рцмс 508тйдст); Ьгеах: саве 'г'; саве 'й': /' Цвета вычитаются: (1,1,8) - (9,8.1) = (1,1,-1).
" После ограничения к (1, 1, 9) получаем желтый цвет ' и для квадрата и для фона "/ 8191епбЕЦцат)оп(61 КОМС йЕУЕК5Е 5ЦВТКАСТ); Ьгеак; сазе 'ю': сазе 'Н'; /" Находится минимум по всем компонентам ° как [ю(п(1,8),ю)п(1,0),ючп(0,1)], что дает (0,8,9). ' Позтому имеем черный квадрат на желтом фоне */ 9191епбйцца((оп(61 Н1М); Ьгеай; сазе 'х': сазе 'Х': /* Находится максимум по всем компонентам * как [юах(1, 0), юах(1.
8), вах(8, 1)], что дает (1, 1 * Результат - белый квадрат на желтом фоне */ Смешивание 205 В)В)епЕЕцва(1оп(6( НАХ); ьгеад; сазе 17: ех1((0); Ьгеах; З(а(Роз(дев(зр(ау()( Область применения смешивания Не все комбинации коэффициентов источника и получателя имеют смысл. Боль- шинство приложений нуждается в ограниченном наборе сочетаний. Ниже описатипичное использование некоторых комбинаций факторов влияния источни- дз в получателя.
Некоторые из этих примеров требуют только входное значение мьфа-компонента, поэтому их работа не зависит от того, хранятся ли альфа-не- винны в буфере кадров. Как и везде, здесь обычно один и тот же результат дос- п(жвм различными способами. Один нз способов получения картинки, состоящей наполовину из одного изображения и наполовину из другого, — это установка коэффициента источника з 61 ОМЕ, а значения коэффициента получателя — в 61 1ЕкО, после чего рису- ' ется первое изображение. Затем фактор влияния источника устанавливается з 6С 5МС АСРНА, а коэффициент получателя — в 61 ОМЕ М1М05 5ЯС АСРНА, в рисуется второе изображение с альфа-компонентом, равным 0.5. Эта пара " значений обычно используется для большинства операций смешивания.
Если "' изображение должно состоять на три четверти из одного рисунка и на четверть из другого рисунка, сначала выводится первое изображение, а затем— второе с альфа-значением 0.25, Чтобы смешать три рисунка в равной пропорции, нужно установить коэффициент получателя в 61 ОМЕ, а коэффициент источника — в 6С 5МС АСРНА. За- . тем рисуется каждый рисунок с А = 0.3333333. Таким образом, яркость каждою рисунка равна одной трети оригинальной, что заметно в местах, где ; рисунки не перекрываются.