16.6.2. Среднее значение

В этом режиме два изображения складываются и результат делится пополам. Сделать это - все равно что применить обычный режим со значением opacity, равным 0,5. Операция коммутативна: result = (base + blend) * 0.5:

16.6.3. Растворение

В каждом пикселе Ы end или base выбирается случайным образом. Значение opaci ty используется как коэффициент вероятности выбора значения Ы end. Чем ближе opacity к 1,0, тем выше вероятность выбора blend, а не base. Если изображение нарисовано как текстура на прямоугольнике, значения текстурных координат можно использовать как аргумент функции noiselD, чтобы получить значение, которое можно использовать для выбора псевдослучайного числа, периодически встречающегося в последующих выборках. Здесь можно применять и коэффициент масштабирования для того, чтобы получить шум большей частоты и создать иллюзию случайности. Значение функции шума будет расположено в диапазоне [-1, 1], так что нужно добавить к нему 1 и умножить на 0,5, чтобы получить число в диапазоне [0, 1]:

float noise = (noisel(vec2 (gl_TexCoord[0] * noiseScale)) + 1.0) * 0.5: result = (noise < opacity) ? blend : base:

16.6.4. «Позади»

В этом режиме значение Ы end выбирается только тогда, когда основное изображение полностью прозрачно (base. а = 0,0). При использовании этого режима создается эффект изображения, нарисованного на обратной стороне прозрачного полотна: будут видны только области, расположенные напротив прозрачных пикселов: result = (base.а == 0.0) ? blend : base:

16.6.5. Очистка

Здесь всегда используется значение Ы end и прозрачность результата установлена в 0 (прозрачность). Этот режим больше подходит для различных инструментов рисования, чем для целых изображений:

result.rgb = blend.rgb: result.a =0.0:

16.6.6. Затемнение

В режиме затемнения сравниваются два значения и для каждого компонента выбирается минимальное из них. Эта операция сделает изображения темнее. Цвет совершенно белого изображения (RGB = 1,0,1,0,1,0) не изменится. При обработке областей черного цвета в любом изображении (0, 0, 0) получатся такие же черные области. Это коммутативная операция - результат не изменится, если изображения поменять местами: result = miп(Ыend. base);

16.6.7. Осветление

Этот режим противоположен затемнению. Вместо того чтобы выбирать минимальное значение для каждого компонента, выбирается максимальное значение. Эта операция тоже коммутативна:

result = max(blend. base):

16.6.8. Умножение

В этом режиме значения яркости двух изображений перемножаются. Окончательное изображение получится темнее везде, где ни одно изображение не белое. Белый цвет здесь является оператором прозрачности, так как любой цвет, умноженный на белый, не изменится. Области черного цвета (0, 0, 0) в любом изображении дадут в результате черный цвет. Это похоже на наложение двух полупрозрачных цветов на диапроекторе. Операция коммутативна: result = blend * base;


⇐ вернуться назад | | далее ⇒