本文主要是介绍Cocos2d-x shader学习: 模糊(Blur),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
模糊效果在游戏中经常会用到,有的为了突出前景会把背景给模糊化,有的是因为一些技能需要模糊效果。模糊是shader中较为简单的一种应用。cocos2dx 3.x给的demo中,就有sprite的模糊的效果。
先说下这个模糊算法的大致思路,我们在片段着色器中可以得到当前像素点的颜色值,要想让这个颜色变得模糊,就要让它与它周围的像素点的颜色稍微接近一点,那么我们就需要拿到这个像素点周围的像素点的颜色值,我们把这些个像素点的值加起来取平均值,就得到了一个区域内的平均颜色。
如果直接使用这个颜色的话,最终的效果会变得很模糊,如果我们只是想稍微模糊一点的话,就要让这个平均值更接近于当前像素点原本的颜色,为此,我们取均值的时候对每个像素点增加了一个权重的定义,当前像素点的权重最高,依次向周围减弱,使得最后得到的均值的颜色更接近于当前像素点原始的颜色。
看代码:
- #ifdef GL_ES
- precision mediump float;
- #endif
- varying vec4 v_fragmentColor;
- varying vec2 v_texCoord;
- uniform vec2 resolution;//模糊对象的实际分辨率
- uniform float blurRadius;//半径
- uniform float sampleNum;//间隔的段数
- vec4 blur(vec2);
- void main(void)
- {
- vec4 col = blur(v_texCoord); //* v_fra
这篇关于Cocos2d-x shader学习: 模糊(Blur)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!