今天来讲一讲分频滤镜的实现
分频滤镜大致分为2分频,3分频,4分频,6分频,9分频滤镜,一是视觉上感觉良好,其次则是比较好实现😂
先看效果,再来说思路~
因为分频滤镜没有影响到图片顶点的展示,所以顶点坐标里的数据不变,其内容是:
attribute vec4 Position;
attributevec2TextureCoords;
varyingvec2TextureCoordsVarying;
voidmain (void) {
gl_Position= Position;
TextureCoordsVarying = TextureCoords;
}
其次来到片元着色器里,在片元着色器里面对应点的颜色层则需要发生一定的变化,如果是2分频,则参照如下代码
precision highp float;
uniform sampler2D Texture;
varyinghighpvec2TextureCoordsVarying;
voidmain() {
vec2uv = TextureCoordsVarying.xy;
floaty;
if(uv.y >=0.0&& uv.y <=0.5) {
y = uv.y +0.25;
}else{
y = uv.y -0.25;
}
gl_FragColor=texture2D(Texture,vec2(uv.x, y));
}
其宗旨就是将对应点的颜色信息转换成自己想要显示的内容,知道原理后,其他分频的滤镜就不难写出啦~