- multiply:
result = base * blend;
- screen:
result = vec4(1.0) - ((vec4(1.0) - blend) * (vec4(1.0) - base));
- darken:
result = min( blend, base );
- lighten:
result = max( blend, base );
- difference:
result = abs( base - blend );
- negation:
result = vec4(1.0) - abs( vec4(1.0) - base - blend );
- exclusion:
result = base + blend - (2.0*base*blend);
- overlay:
# per channel: if (base < 0.5) { result = 2.0 * base * blend; } else { result = vec4(1.0) - 2.0 * (vec4(1.0) - blend) * (vec4(1.0) - base); }
- hard light:
# per channel: if (blend < 0.5) { result = 2.0 * base * blend; } else { result = vec4(1.0) - 2.0 * (vec4(1.0) - blend) * (vec4(1.0) - base); }
- soft light:
# per channel: if (blend < 0.5) { result = 2.0 * base * blend + base*base - 2.0 * base*base*blend; } else { result = 2.0 * sqrt(base) * blend - sqrt(base) + 2.0 * base - 2.0 * base*blend; }
- dodge:
result = base / (vec4(1.0) - blend);
- burn:
result = vec4(1.0) - (vec4(1.0) - base) / blend;
glsl颜色混合算法
猜你喜欢
转载自blog.csdn.net/yvhkyiu/article/details/77920711
今日推荐
周排行