在前一篇中,我们用一种较为简单的方法实现了模糊,但是他只能实现取点距离很小的模糊,不是很完美~本篇中,我们用另一种方法实现模糊效果,它叫高斯模糊,用过PS的同学对这个词应该不陌生吧~基本的模糊实现的思想还是和前一篇是一样的,但是在取点的方法上,这次会更加科学一些~
高斯模糊实现用的函数叫做高斯函数,高斯函数也就是正态分布的密度函数,也就是说这些临近点取到之后,最终要对这些值进行服从于正态分布的加权,就获得了当前像素模糊之后应该表现出的颜色了。因为我们处理的是一张贴图,是一个二维的数据,所以我们必须要使用二维的正态分布。简单来说,把一维的标准正态分布函数曲线沿着y轴旋转一圈,得到的曲面就是二维的正态分布了~取邻近点的时候我们从中心原点向外每隔固定半径距离采样,这样当前处理的像素点就带有更多周围像素的信息了,模糊的效果也会好一些。这样的话,实际上,我们每次采样的时候,都取的是周围圆形面积内的点,有较多的计算量。好在高斯模糊是一个可分割的卷积运算,我们可以把这个面积内的运算拆分成横向和纵向两次处理,第二次计算在第一次的结果上进行,最后得到的结果是一样的~(关于二维正态分布和卷积运算等数学概念这里不展开了,相关资料很容易找到)
由于一次只能对一个维度进行处理,这里先进行横向的处理,u_blurDis参数如下设置:
_pixelSpan = 1.0f;
float blursDi