首先对不起我的英语,这不是我的母语,但我希望你能理解我想要的内容。
所以基本上我想模糊它周围的图像。 这是场景的图像:(蓝色的圆圈就像物体的中心一样)
在模糊和东西之后,我期待这样的事情:
目前我正在渲染矩形300次,每次比前一次大1px。但这种方法很慢......
使用GLSL着色器可以实现这种效果吗? (我尝试过径向模糊,但结果并不完全是我想要的。)
解决! 我认为这不是最好的方式,但它有效...... 这是片段着色器代码:
precision mediump float;
uniform float lightRadius;
uniform vec2 resolution;
uniform sampler2D Texture;
varying vec2 texCoord;
void main()
{
vec2 step = vec2(1.0 / resolution.x, 1.0 / resolution.y);
vec2 cent = vec2(.5,.5);
vec2 dir = texCoord - cent;
dir = normalize(dir);
float dist = length(texCoord - cent);
bool s = false;
vec3 col = vec3(1,1,1);
for (float i=0.0; i< lightRadius.x;i+=1.0)
{
vec2 pix = cent + (dir * i) * step;
float dist2 = length(pix - cent);
if(dist2>dist)
break;
vec4 color = texture2D(Texture, pix);
if(color.a > 0.5)
{
s = true;
break;
}
}
if(s == true){
gl_FragColor = vec4(0,0,0,1);
}else{
gl_FragColor = vec4(1,1,1,0);
}
}
答案 0 :(得分:1)