cg 语言之扇形径向模糊

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mansir123/article/details/78665613

模糊的原理:像周围的借取颜色,放到本像素。不同的模糊效果是采用不同的去颜色位置和算法。径向模糊原理是沿着某方向取颜色,而扇形径向则是沿着扇形的切线方向取色。

sampler2D RT : register(s0);

///////////////////////////////////入口函数
float4 Distortion_ps(//in float4 pos : POSITION,
                     float2 iTexCoord : TEXCOORD0,

                     ) : COLOR
{
        float4 co=float4(0); 
        ///////径向模糊
        float2 dir=float2(0.5,0)-iTexCoord;
        float dist=length(dir);
        dir/=dist;
        float3 dirDot=cross(float3(0.5,0,1),float3(dir.x,dir.y,0));
        //normalize(dirDot);
        dir=float2(dirDot.x,dirDot.y);
        dir=dir/(length(dir));
        dir*=0.35*dist;//模糊程度与距离中心的长度相关

        float4 sum =float4(0); 
        sum= tex2D(RT, iTexCoord);
        sum +=tex2D(RT, iTexCoord - dir*0.01)*0.8;  
        sum += tex2D(RT, iTexCoord - dir*0.02)*0.6;  
        sum += tex2D(RT, iTexCoord - dir*0.03)*0.5;  
        sum += tex2D(RT, iTexCoord - dir*0.04)*0.3;  
        sum += tex2D(RT, iTexCoord - dir*0.05)*0.1;  
        sum += tex2D(RT, iTexCoord + dir*0.01)*0.8;  
        sum += tex2D(RT, iTexCoord + dir*0.02)*0.6;  
        sum += tex2D(RT, iTexCoord + dir*0.03)*0.5;  
        sum += tex2D(RT, iTexCoord + dir*0.04)*0.3;  
        sum += tex2D(RT, iTexCoord + dir*0.05)*0.1;  

        sum /= 5.6;  
        co=sum;



     co.a=1;
    return co;
}

猜你喜欢

转载自blog.csdn.net/mansir123/article/details/78665613
今日推荐