UnityShader : 高斯模糊 Gaussian Blur

通常我们会比较在意图片的清晰度,想要图片越精细,那自然会想到像素要高了,像素的意义就是保存更多的颜色信息,这样图片就能表现更多的细节。相反,要达到模糊效果,自然就是将颜色信息舍弃掉,通过不同的算法,得到的模糊效果也会不一样。


普通的模糊算法

比较普通的一种,就是将每个像素的颜色,都与周边的颜色靠拢,丢失自己独特的颜色,也就是取自己与周围颜色的平均值,从而达到模糊的效果。

开始写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;
      
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值