通常我们会比较在意图片的清晰度,想要图片越精细,那自然会想到像素要高了,像素的意义就是保存更多的颜色信息,这样图片就能表现更多的细节。相反,要达到模糊效果,自然就是将颜色信息舍弃掉,通过不同的算法,得到的模糊效果也会不一样。
普通的模糊算法
比较普通的一种,就是将每个像素的颜色,都与周边的颜色靠拢,丢失自己独特的颜色,也就是取自己与周围颜色的平均值,从而达到模糊的效果。
开始写Shader, 先定义可调节的参数
//因为shader取值都是百分比,所以我们要定出贴图的尺寸来进行计算
_TextureSize ("_TextureSize",Float) = 256
//取值半径
_BlurRadius ("_BlurRadius",Range(1,15) ) = 1
然后编写出取平均颜色的函数
float4 GetBlurColor( float2 uv )
{
float space = 1.0/_TextureSize; //算出一个像素的空间
int count = _BlurRadius * 2 +1; //取值范围
count *= count;
//将以自己为中心,周围半径的所有颜色相加,然后除以总数,求得平均值
float4 colorTmp = float4(0,0,0,0);
for( int x = -_BlurRadius ; x <= _BlurRadius ; x++ )
{
for( int y = -_BlurRadius ; y <= _BlurRadius ; y++ )
{
float4 color = tex2D(_MainTex,uv + float2(x * space,y * space));
colorTmp += color;