result = white - abs(white - base blend):
16.6.19. Исключение Этот режим похож на разность, но результат получается более мягким, немного менее контрастным. Это нечто среднее между разностью и инверсной разностью. Этот режим также является коммутативным:
result = base + blend - (2.0 * base * blend):
16.6.20. Прозрачность
Значение прозрачности в диапазоне [0, 1] также можно использовать для определения участия основного изображения в формировании результата. Значение result из любой приведенной ранее формулы можно впоследствии изменить таким образом:
finalColor = mix(base. result, opacity):
16.7. Свертка Свёртка - это общая операция обработки изображения, которая может использоваться для фильтрации изображения. Это происходит с помощью вычисления суммы исходного изображения и меньшего изображения, называемого ядром свёртки или свёрточным фильтром. В зависимости от выбора значений в ядре
16.7. Свертка операция свертки может выполнять размывку, увеличение резкости, уменьшение шума, выделение краев и другие полезные операции.
Математически дискретная двухмерная операция свёртки определена так:
licight-1 widlh-1
Н(х,у)= X £ F(x + i,y+j)G(i,j).
.7=0 1=0
В этом уравнении функция F представляет основное изображение, a G - ядро свёртки. Двойная сумма основана на ширине и высоте ядра свёртки. Значение конкретного пиксела в окончательном изображении вычисляется совмещением центра ядра свёртки с пикселом в той же точке, что и в основном изображении, и умножением значений из основного изображения на значения из ядра. Затем полученные значения суммируются.
Набор функций для работы с изображениями в OpenGL 1.5 включает в себя функции для свёртки, но реализация этой функциональности всегда ограничивает размер ядра (обычно это 3 х 3) и точность промежуточных операций. Гибкость языка шейдеров OpenGL позволяет задавать ядро практически любого размера и точность, соответствующую операциям над числами с плавающей запятой. Более того, операция свёртки может быть написана в шейдере OpenGL таким образом, чтобы выполнялось минимальное количество умножений (например, нулевые значения ядра вообще исключаются из вычислений).