模糊前:
模糊后(WebGL实现: 点击打开链接):
一般的采样模糊方式达不到上述效果,这里给出个人实现的glsl代码:
void main()
{
vec4 color = vec4(0.0);
int seg = 5;
int i = -seg;
int j = 0;
float f = 0.0f;
float dv = 2.0f/512.0f;
float tot = 0.0f;
for(; i <= seg; ++i)
{
for(j = -seg; j <= seg; ++j)
{
f = (1.1 - sqrt(i*i + j*j)/8.0);
f *= f;
tot += f;
color += texture( texSampler, vec2(uv.x + j * dv, uv.y + i * dv) ).rgba * f;
}
}
color /= tot;
FragColor = color;
}
这里主要展