本文转载自: http://blog.csdn.net/zx6733090/article/details/40311689
功能本人之前也介绍过,但是这里转载,是因为这个版本是Opengl实现的,大家可以看一下,也可以顺便学习一下Opengl。
Opengl 实现径向模糊,可用于实现放射性效果:
#ifdef GL_ESprecision mediump float;#endif
uniform vec2 centerpos;uniform float GlowRange; varying vec4 v_fragmentColor;varying vec2 v_texCoord;void main() { vec4 clraverge=vec4(0,0,0,0); float range=GlowRange,count=0,x1,y1; vec2 cpos=centerpos; for( float j = 1; j<=range ; j += 1 ) { if(cpos.x-v_texCoord.x==0) { x1=v_texCoord.x; y1=v_texCoord.y+(cpos.y-v_texCoord.y)*j/(6*range); } else { float k=(cpos.y-v_texCoord.y)/(cpos.x-v_texCoord.x); x1=v_texCoord.x+(cpos.x-v_texCoord.x)*j/200; if((cpos.x-v_texCoord.x)*(cpos.x-x1)<0) x1=cpos.x; y1=cpos.y-cpos.x*k+k*x1; if(x1<0.0||y1<0.0||x1>1.0||y1>1) { continue; } } clraverge+=texture2D( CC_Texture0, vec2(x1,y1) ); count+=1; } clraverge/=count; gl_FragColor =clraverge;}
centerpos为径向中心点,GlowRange为径向范围。其基本思想是模糊沿着中心点向外一条直线上的点,采样值可以自己确定,效果 好就ok了、、~
效果图:
Trent1985 认证博客专家 深度学习 人像美颜美妆算法 图像特效 本人多年来专注图像特效、人像美颜美妆算法研究、AI美颜美妆探索,著有《图像视频滤镜与人像美颜美妆算法详解》一书,欢迎 志同道合的朋友们一起学习交流!个人座右铭:谨言慎行,三思而后行!