今天來講一講分頻濾鏡的實現(xiàn)
分頻濾鏡大致分為2分頻,3分頻劈彪,4分頻,6分頻顶猜,9分頻濾鏡沧奴,一是視覺上感覺良好,其次則是比較好實現(xiàn)??
先看效果长窄,再來說思路~
因為分頻濾鏡沒有影響到圖片頂點(diǎn)的展示滔吠,所以頂點(diǎn)坐標(biāo)里的數(shù)據(jù)不變,其內(nèi)容是:
attribute vec4 Position;
attributevec2TextureCoords;
varyingvec2TextureCoordsVarying;
voidmain (void) {
? ? gl_Position= Position;
? ? TextureCoordsVarying = TextureCoords;
}
其次來到片元著色器里挠日,在片元著色器里面對應(yīng)點(diǎn)的顏色層則需要發(fā)生一定的變化疮绷,如果是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));
}
其宗旨就是將對應(yīng)點(diǎn)的顏色信息轉(zhuǎn)換成自己想要顯示的內(nèi)容肆资,知道原理后矗愧,其他分頻的濾鏡就不難寫出啦~