2
首先感谢我的英语,这不是我的母语,但我希望你能明白我想问什么。GLSL“zoom”like blur
所以基本上我想模糊它的中心周围的图像。 这里的场景的图像:(喜欢的东西的蓝色圆圈为中心)
模糊之类的东西,我希望这样的事情以后:
目前我矩形渲染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);
}
}
基于我设法制造的godray材料。谢谢。 – robot9706
@ robot9706这可能更直接相关:http://http.developer.nvidia.com/GPUGems3/gpugems3_ch27.html。它甚至有一个[“缩放”模糊图像](http://http.developer.nvidia.com/GPUGems3/elementLinks/27fig03.jpg)。 – jozxyqk