当前位置:   article > 正文

OpenGL(十七)Photoshop blend算法 与 图层混合模式_ps混合模式 glsl实现

ps混合模式 glsl实现

使用混合模式可以制作丰富多彩的效果。而OpenGL中可以轻松开启这种模式,但更关键的是图形算法。本文参照 Photoshop blend算法 ,介绍如何通过shader,在OpenGL中实现混合效果。

OpenGL中开启混合

在OpenGL中可以开启混合模式:

  1. glEnable( GL_BLEND ); // 启用混合
  2. glDisable( GL_BLEND ); // 禁用关闭混合

统一说法,参照Photoshop,下方图层、 baseColor 为原色。上方图层、 blendColor 为混合色。下面介绍 Photoshop blend算法 的详细实现。

公式汇总

先上一张公式汇总图,图片来自网络,出于效率和效果的平衡,有些公式跟下文提到的有些出入。


正常混合

正常 Opacity

使上方图层完全遮住下方图层。

gl_FragColor = baseColor * (1.0-blendColor.a) + blendColor * blendColor.a;

使结果更暗

整个变暗块都是通过混合色的叠加,使结果更暗。常用的是变亮变暗,程度正常,正片叠底及滤色,较为柔和。

变暗 Darken

两个图层中较暗的颜色将作为混合的颜色保留,比混合色亮的像素将被替换,而比混合色暗像素保持不变。

gl_FragColor = min(baseColor,blendColor);

正片叠底 Multiply

整体效果显示由上方图层和下方图层的像素值中较暗的像素合成的图像效果,任意颜色与黑色重叠时将产生黑色,任意颜色和白色重叠时颜色则保持不变。

gl_FragColor = baseColor*blendColor;

颜色加深 Color Burn

选择该项将降低上方图层中除黑色外的其他区域的对比度,使图像的对比度下降,产生下方图层透过上方图层的投影效果。

gl_FragColor = vec4(1.0) - (vec4(1.0)-baseColor)/blendColor);
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号