16.6.9. Экран

Режим экрана противоположен умножению, поскольку здесь умножаются значения, противоположные исходным. Оператором прозрачности является черный цвет. Этот режим коммутативен:

result = white - ((white - blend) * (white - base));

16.6.10. Усиление цвета

В режиме усиления цвета основной цвет затемняется дополнительным цветом (уменьшается яркость). Если значение blend - белый цвет, эффекта в этой точке не будет. При вычислениях иногда могут получиться отрицательные значения, которые будут отброшены при приведении окончательного цвета к конкретному диапазону:

result = white - (white - base) / blend:

16.6.11. Ослабление цвета

Этот режим делает цвета более светлыми. Если значение Ы end - черный цвет, эффекта в этой точке не будет. При вычислении могут получиться значения больше 1, которые затем отбрасываются так же, как и при реализации предыдущего режима:

result = base / (white - blend):

16.6.12. Наложение

В этом режиме сначала вычисляется яркость основного изображения. Если значение яркости меньше 0,5, значения blend и base умножаются. Если значение яркости больше 0,5, выполняется та же операция, что и в режиме экрана. Эффект состоит в том, что значение base смешивается со значением blend, а не заменяется им. Это позволяет шаблонам и цветам перекрывать основное изображение, со храняя тени и освещенные участки. При значении яркости равном 0,5 получается разрыв, поэтому нужно создать в этих местах плавный переход между уравнениями для яркости в диапазоне [0,45, 0,55]:

float luminance = dot(base. lumCoeff):

if (luminance < 0.45)

result = 2.0 * blend * base: else if (luminance > 0.55)

result = white - 2.0 * (white - blend) * (white - base); el se {

vec4 resultl = 2.0 * blend * base:

vec4 result2 = white - 2.0 * (white - blend) * (white - base); result = mixtresultl. result2. (luminance - 0.45) * 10.0);

}

16.6.13. Мягкое освещение

При использовании этого режима получается эффект, похожий на мягкий свет, проходящий через вспомогательное изображение и падающий на исходное. В результате получится сочетание двух изображений, освещенное приглушенным светом:

result = 2.0 * base * blend + base * base - 2.0 * base * base * blend:

16.6.14. Жесткое освещение

Этот режим похож на наложение, за исключением того, что яркость вычисляется на основе значения blend, а не base. Пикселы во вспомогательном изображении с яркостью 0,5 не будут влиять на основное изображение. Этот режим часто используется при создании эффектов рельефа. Для получения плавного перехода яркости в диапазоне [0,45, 0,55] используется функция mi х: float luminance = dot(blend, lumCoeff);

if (luminance < 0.45)

result = 2.0 * blend * base; else if (luminance > 0.55)

result = white - 2.0 * (white - blend) * (white - base): else {

vec4 resultl = 2.0 * blend * base;

vec4 result2 = white - 2.0 * (white - blend) * (white - base); result = mixtresultl, result2. (luminance - 0.45) * 10.0):


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